适用于 IOS 的 Chrome 无法在 iframe 中正确打开新窗口

Posted

技术标签:

【中文标题】适用于 IOS 的 Chrome 无法在 iframe 中正确打开新窗口【英文标题】:Chrome for IOS not opening new window correctly in iframe 【发布时间】:2012-06-29 11:10:30 【问题描述】:

我正在尝试在 iframe 内的 Chrome for ios 的新窗口中打开链接,但 Chrome for iOS 不会在新窗口中打开链接,而是浏览器在同一窗口中打开链接,而不是在一个新的窗口。弹出窗口也是如此。很奇怪。

例子:

test.html

<iframe src="iframe.html"  ></iframe>

iframe.html

<SCRIPT type="text/javascript">
function open_popup()

    window.open('http://www.google.com', '_blank', '');

</SCRIPT>

<a href="http://www.google.com" target="_blank">New window</a><br>
<a href="#" onclick="open_popup();">New popup</a>

直接浏览到 iframe.html 时链接会在新窗口中打开,而浏览到 test.html 时则不会

这是设计使然,还是 iOS 版 Chrome 中的错误? 如果是错误,有谁知道如何报告这个错误?

(iOS 版 Safari 在浏览 test.html 时会在新窗口中打开链接)

【问题讨论】:

【参考方案1】:

这是 iOS 版 Chrome 中的一个(已知)错误。如果您想报告它以便在修复时收到通知,file a bug 并从“模板”菜单中选择“iOS 问题”。

【讨论】:

【参考方案2】:

与其(再次)提交此错误,不如为现有问题投票:https://code.google.com/p/chromium/issues/detail?id=135498

【讨论】:

我认为实际上是这个问题:code.google.com/p/chromium/issues/detail?id=135362【参考方案3】:

正如 Aaron 所说,这是 iOS 版 Chrome 上的一个已知问题:

https://code.google.com/p/chromium/issues/detail?id=135362

您可以在 iframe 中使用 window.top.open() 轻松解决此问题,但如果您有跨域限制或需要在 iframe 中正确处理 window.opener,则需要另一种方法*。

*如果它们是异步的,其他方法可能会陷入 Popup Blocker 问题。

【讨论】:

我无法让 window.top.open() 与 Chrome for iOS 一起使用。 iOS 版 Chrome 会忽略此命令。

以上是关于适用于 IOS 的 Chrome 无法在 iframe 中正确打开新窗口的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC connectionState 停留在“new” - 仅适用于 Safari,适用于 Chrome 和 FF

Socket.io 适用于桌面 safari 和 chrome,但不适用于移动设备

适用于 iOS 的 Chrome:Cookie 的“始终允许”

iframe 安全错误 - 仅适用于 iOS 版 Chrome [重复]

Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败

占位符在 IE 中无法正常工作,但适用于 Chrome