Chrome 扩展以获取字符串并将其放置在特定的网站字段中

问题描述 投票:0回答:0

我正在努力解决工作场所的问题。我对编程完全陌生,所以我可能会不知所措,但这就是我能想到的。

我们有一个读卡器,我们正试图与 WaveApps 发票软件一起使用。对此没有原生支持。 读卡器充当 USB 键盘,当以下列格式刷卡时创建输入:%B0000000000000000^LASTNAME/FIRSTNAME^YYMM#################### ############# 所以刷卡总是用 %B 注册,然后是 16 位卡号。然后“^”字符后跟姓氏“/”字符、名字、“^”字符后跟两位数年份和两位数月份。

同时,付款网站如下所示:

WaveApps 付款截图

1

如果我在卡号字段中用光标刷卡,它会输入看似随机的数字。

所以,我决定创建一个 Chrome 扩展程序,它可以接收输入并将其放入这些字段中。

扩展看起来像这样:

CC 支付的 Chrome 扩展

2

基本的想法是,当光标在扩展字段中时,用户会刷卡,单击按钮,网站会自动填充正确的信息。这是我用于扩展的代码。

document.addEventListener('DOMContentLoaded', function() {
  var checkPageButton = document.getElementById('submit2');
  
  checkPageButton.addEventListener('click', function() {
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            chrome.tabs.executeScript(
                tabs[0].id
                ,{code:
                    function() {
                        //Get fields with card info
                        var inputField = document.getElementById('submit');
                        var inputValue = inputField.value;
                        
                        //Chop up card info and store into individual variables
                        var cardNumber = inputValue.slice(2, 18);
                        var nameStartIndex = inputValue.indexOf("^") + 1;
                        var nameEndIndex = inputValue.indexOf("^", nameStartIndex);
                        var name = inputValue.slice(nameStartIndex, nameEndIndex).replace("/", " ");
                        var dateStartIndex = inputValue.indexOf("^", nameEndIndex) + 1;
                        var year = inputValue.slice(dateStartIndex, dateStartIndex + 2);
                        var month = inputValue.slice(dateStartIndex + 2, dateStartIndex + 4);
                        var date = month + year;
                        
                        //Get fields to put values into
                        var cardNumber_f = document.getElementById("CreditCardNumber");
                        var name_f = document.getElementById("NameOnCard");
                        var date_f = document.getElementById("ExpiryDate");

                        cardNumber_f.value = cardNumber;
                        name_f.value = name;
                        date_f.value = date;
                    }
                }
            );
        });
    });
});

无论我这样做多少次,都没有任何反应。我点击提交,好像代码没有与网站正常通信。我觉得有点失落。

我也试过将其作为用户脚本,但这是一个失败的原因。

javascript google-chrome google-chrome-extension browser-extension
© www.soinside.com 2019 - 2024. All rights reserved.