我编写了一个 Firefox 扩展,它从条形码标签扫描仪获取输入,调用页面并将其写入字段。扫描仪被编程为在读取标签后发送击键。我在正在侦听的窗口对象上添加了一个事件CTRLK。我的问题是文本框的焦点,当它丢失时它不起作用。我的问题是:是否可以在不使用文本框元素的情况下获取扫描标签的值?扫描仪输入通过键盘接口输入。
BrowserOverlay.xul
:
<window id="main-window">
<script type="application/x-javascript">
window.addEventListener("keydown", barcodeInit, false);
function sel(){
var textbox = document.getElementById("editIndex");
textbox.focus();
}
</script>
<hbox>
<spacer flex="1"/>
<textbox id="editIndex" value="" size="1" maxlength="25" oncommand="sel()" />
<statusbar id="status-bar" class="chromeclass-status">
<statusbarpanel label="Barcode AddOn" class="statusbarpanel-iconic"
onclick="openPreferences('barcodePane');" align="left"
src="chrome://topas/content/images/icon18.png" />
</statusbar>
</hbox>
当我获得文本框内容时,我正在调用openURI
在实际窗口中打开页面并向其发布数据的方法。
BrowserOverlay.js
:
if (event.ctrlKey && pressedKey == prefKey ){
if(typeof editIndex != "undefined"){
var dataString = "barcodeValue=" + editIndex;
immidiate = true;
document.getElementById("editIndex").value = "";
window.loadURI(stringURL, null, dataString, false);
}