是否可以为已用于加载PDF文件的iframe触发按键事件

时间:2012-11-09 11:42:35

标签: javascript html pdf

我99%肯定这是不可能的,但我会问,只是有人有想法。

一点背景:

我的用户使用条形码扫描仪从系统中托收物品。每个条形码都是一个前面带有“^”的ID号(因此系统可以判断是否有人正在扫描而不仅仅是键入)。当他们扫描每个条形码时,页面自动下载PDF(到iframe),该PDF被打印到标签上并粘在盒子上。然后他们转到下一个等等。

自动打印是通过附加到文档的onkeypress事件处理的。这是被调用的函数: -

function quickEntry() {
    if (String.fromCharCode(event.keyCode) == "^") {
        if (!scanning) {
            grn = '';
            scanning = true;
            setTimeout('addBarcode()', 1000);
        }
        else {
            alert("Still processing previous GRN.");
        }
    }
    else
        grn += String.fromCharCode(event.keyCode);
}

问题:

问题是,在打印完第一个标签后,用户需要点击主html文档的某个区域才能再次扫描条形码,即使窗口本身仍有焦点。

修改

任何到达此问题的人都会查看this question以获取更多最新答案。

1 个答案:

答案 0 :(得分:2)

我的猜测是窗口有焦点,但input元素失去焦点(焦点可能已移至iframe或其中的某个元素。)

To find out which element has stolen your focus, you can use document.activeElement并更改它的CSS样式以使其更突出或使用CSS和:focus选择器。

要解决您的问题,请使用JavaScript打印iframe,然后将焦点强制转移回input元素。

这可能涉及主页与iframe之间的JavaScript调用;有answers on this site如何做到这一点。

[编辑] 有几种方法可以将PDF嵌入到网页中。当您使用iframe时,PDF插件将控制浏览器窗口(因此它可以响应键盘和鼠标事件)。

尝试使用<object>(pdfobject.com/markup/index.php)加载PDF,而不是使用iframe