javascript - 打印功能后无法单击其他选项卡

标签 javascript jquery css html

我正在使用默认打印功能进行打印,但是打印功能完成后我无法单击其他选项卡。打印窗口在同一页打开

function printReport() {
    var divElements = $('.nicEdit-main').html();
    var oldPage = document.body.innerHTML;
    document.body.innerHTML = "<html><head><title></title></head><body>" + divElements + "</body>";
    window.print();
    document.body.innerHTML = oldPage;
}

最佳答案

不幸的是,您刚刚替换了整个页面。 innerHTML 仅返回字符串形式的 HTML 减去处理程序和附加到元素的任何数据。设置 innerHTML 从该字符串重新创建 DOM,没有最初附加的处理程序。您刚刚“有效地”使页面瘫痪!

我建议:

  • 困难的方法是继续你正在做的事情,但是将所有处理程序委托(delegate)给 document 就像 live 会做的那样,这样他们就不会不会被删除。困难,可能,但不可扩展、不可维护或最优。

  • 或者您可以创建一个隐藏的 iframe 并将要打印的内容放在那里。然后从该 iframe window 调用 print。这样,您就不会丢失当前页面。

  • 其他人会创建一个新窗口,将内容放在那里,运行打印并在之后立即关闭它。与 iframe 的工作方式相同,但您不会想要像某些弹出式广告一样立即打开和关闭的令人毛骨悚然的窗口。

关于javascript - 打印功能后无法单击其他选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477778/

相关文章:

javascript - Firefox 控制台中显示的点击事件

javascript - react .js : Parent state values not passing into child properties + Fetch API data cannot be accessed

JavaScript 正则表达式删除除 "."和 "?"之外的所有标点符号

javascript - 我如何让 DOM 知道动态创建的新元素?

javascript - jQuery 悬停多个 block

javascript - 如何保护 Chrome 应用中的某些代码?

javascript - 禁用一个 HTML 页面中的所有 JavaScript 和 jQuery

javascript - 如何选择并运行这个onload函数?

html - 显示与导航内联的图标

javascript - JQuery 灯箱内可拖动图像