javascript - 为什么这种基于 javascript 的打印会导致 Safari 刷新页面?

标签 javascript jquery printing safari webkit

我正在处理的页面执行了一个 JavaScript 函数来打印页面的部分内容。 由于某种原因,在 Safari 中打印会导致窗口以某种方式更新。我之所以这么说,是因为它并不像重新加载页面那样真正刷新,而是从头开始“渲染”页面,即滚动到顶部,flash 动画从 0 开始,等等。

此 fiddle 再现了效果:http://jsfiddle.net/fYmnB/

在 Safari 中单击打印按钮并完成或取消打印会导致屏幕“变白”一秒钟,这在我的真实网站中表现为“类似于”重新加载。当使用 Firefox 运行打印按钮时,只需打开和关闭打印对话框,而不会以任何方式影响 fiddle 页面。

我调用浏览器打印方法的方式是否存在导致此问题的原因,或者如何解释 - 最好是避免?

P.S.:在我的真实网站上,Chrome 也会出现同样的情况。不过,在示例 fiddle 中,Chrome 似乎没有显示与 Safari 相同的行为。

编辑:我还尝试将打印按钮放在与 a anchor 不同的标签上,例如 spanbutton,但是那对解决问题没有帮助。

编辑:我在 Mac OS 10.6.8 上使用 Safari 5.1.2 时遇到了这个问题。在 jsfiddle 示例中,该行为显示为在单击打印按钮并关闭(打印或中止)打印对话框后覆盖整个浏览器的白色“闪烁”。

编辑:刚刚开始对这个问题进行悬赏,因为我仍在寻找此浏览器行为的解释。我非常愿意提供有关这个问题的更多细节。根据我的经验,不建议发布在线页面的链接,但我觉得这个问题确实很难重现。我认为我在发布的 jsfiddle 中遇到的“闪烁和重新渲染”希望是同一问题的结果。

编辑:正如评论中所解释的,打开一个包含应用程序当前状态的新窗口,然后打印并关闭该窗口,可能是一个解决方案,但我认为它不足以解决当前问题。

最佳答案

如果您无法找到解决问题的方法,您可以通过以下方式快速解决: var win=window.open() 您所在的同一页面 然后是win.print(),然后是win.close()。希望这会有所帮助。

关于javascript - 为什么这种基于 javascript 的打印会导致 Safari 刷新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9261335/

相关文章:

javascript - 映射数组项不会呈现所有元素

javascript - 通过按 ctrl 按钮选择多个项目

javascript - Jquery - 在参数中选择一个数字字符串

jquery - 使用 Opera 加载 jQuery 后

python - 如何更好地打印列表?

javascript - 为什么我得到 "undefined is not an object (evaluating PropTypes.shape)"?

javascript - Closure Compiler 并不总是内联枚举。为什么?

javascript - Jquery:点击操作之前确认

.net - 如何在.net中为打印机获取高分辨率图像?

javascript - Electron 收据热敏打印机