gpt4 book ai didi

javascript - window.open 触发 print onLoad 时父窗口卡住

转载 作者:技术小花猫 更新时间:2023-10-29 12:39:30 25 4
gpt4 key购买 nike

我有一个场景,在我的网页中我执行了一个 window.open(),它打开了另一个窗口,其 onLoad() 调用了 window.print()。在此流程中,父 window 保持卡住状态,不允许单击任何链接。我如何摆脱这个问题?

例如:

一个 HTML 页面具有三个链接:创建、管理和打印。打印链接的 javascript 代码如下:

    var url = '/actions/print/';
var win = window.open(url,"Title_","resizable=yes,scrollbars=yes,directories=no,titlebar=no,location=no,status=no,menubar=no,width="+width+",height="+height);

现在,/actions/print 呈现的 HTML 是:

<html><body onload="window.print();"> ... Content goes here ...</body></html>

如您所见,点击打印会打开一个新窗口并立即触发打印。在这种状态下,当我返回带有三个链接的父窗口并尝试单击其他链接时,它不起作用并且显示为卡住状态。

最佳答案

您无法在 OS X 上解决此问题。我很确定您只在 OS X 上进行了测试。

以下是我在不同浏览器和平台上进行测试后得出的结论。

  • 当从子窗口打开打印模态时,OS X 上的 Chrome、Safari 和 Firefox 不允许与父窗口交互(关闭打印对话框,但不关闭弹出窗口,重新启用交互)。

  • Win XP 上的 IE8、IE11、Chrome 和 Firefox(全部在 Win7 上)始终允许与同一场景进行交互。

这让我相信这是 OS X 的限制或建议。在进一步研究中,这是我在 developer.apple.com 上发现的,证实了我的怀疑:

文档模式对话框可防止用户在特定文档中执行任何其他操作。用户可以切换到应用程序中的其他文档和其他应用程序。 Document-modal dialogs should be sheet,在使用文档模式对话框(Sheets)中有描述。

当多个文档可以在不同时间出现在一个窗口中时,使用工作表。例如,标签式浏览器可以在不同时间在单个窗口中显示不同的文档。工作表适合这种情况,即使它仅适用于当前在窗口中可见的文档。因为用户在同一窗口中查看不同文档之前实际上必须关闭当前文档,所以他们应该首先关闭工作表

https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/WindowDialogs.html

关于javascript - window.open 触发 print onLoad 时父窗口卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com