1

我 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 文档的某个区域才能再次扫描条形码。

编辑

任何遇到此问题的人都可以查看此问题以获取更多最新答案。

4

1 回答 1

2

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

要找出哪个元素偷走了你的注意力,你可以使用document.activeElement并更改它的 CSS 样式以使其更加突出,或者使用 CSS 和:focus选择器。

要解决您的问题,请iframe使用 JavaScript 打印,然后将焦点重新放在input元素上。

这可能涉及主页面和iframe;之间的 JavaScript 调用。这个网站上有答案如何做到这一点。

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

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

于 2012-11-09T13:08:20.813 回答