适用于 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 上失败