我正在努力解决工作场所的问题。我对编程完全陌生,所以我可能会不知所措,但这就是我能想到的。
我们有一个读卡器,我们正试图与 WaveApps 发票软件一起使用。对此没有原生支持。 读卡器充当 USB 键盘,当以下列格式刷卡时创建输入:%B0000000000000000^LASTNAME/FIRSTNAME^YYMM#################### ############# 所以刷卡总是用 %B 注册,然后是 16 位卡号。然后“^”字符后跟姓氏“/”字符、名字、“^”字符后跟两位数年份和两位数月份。
同时,付款网站如下所示:
WaveApps 付款截图
如果我在卡号字段中用光标刷卡,它会输入看似随机的数字。
所以,我决定创建一个 Chrome 扩展程序,它可以接收输入并将其放入这些字段中。
扩展看起来像这样:
CC 支付的 Chrome 扩展
基本的想法是,当光标在扩展字段中时,用户会刷卡,单击按钮,网站会自动填充正确的信息。这是我用于扩展的代码。
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;
}
}
);
});
});
});
无论我这样做多少次,都没有任何反应。我点击提交,好像代码没有与网站正常通信。我觉得有点失落。
我也试过将其作为用户脚本,但这是一个失败的原因。