window.open 总是在 iPad 版 Mobile Safari 中打开新标签页

Posted

技术标签:

【中文标题】window.open 总是在 iPad 版 Mobile Safari 中打开新标签页【英文标题】:window.open always opens new tab in Mobile Safari for iPad 【发布时间】:2013-03-15 15:09:01 【问题描述】:

我的公司正在使用 Karmasoft 的 UltimateEditor 允许在 textarea 字段中添加富文本以及拼写检查功能。

我们遇到的一个问题是,在 iPad 版 Safari 上,拼写检查器在新选项卡中打开,而不是在当前窗口顶部的新窗口中打开。

我尝试查看 Safari 设置,看看是否可以找到“在选项卡中打开页面而不是窗口”设置,该设置存在于 Windows 版 Safari 中,但我在 iPad 上找不到类似的 Safari 设置.

我在http://apple.stackexchange.com 上问过,基本的回答是这正是它在 iPad 中的工作方式,因为“ios 版 Safari 中没有窗口的概念,所以你只需要一个新标签”

有没有其他人遇到过这个问题,他们找到解决方法了吗? UltimateEditor 插件使用window.open() 打开拼写检查窗口。

【问题讨论】:

【参考方案1】:

这就是移动 Safari 的运作方式。您无法像在非移动环境中那样打开“迷你窗口”。

您可以考虑做的是覆盖window.open 函数以打开一个包含iframe 的div。我不知道这将如何传播并影响编辑器。如果这样更容易,您还可以选择尝试覆盖编辑器直接调出拼写检查器的方法。我已经采取了两条路线,并且根据组件的不同,每条路径都可能比另一条更容易。这实际上取决于您正在编辑的组件。

有关覆盖 window.open 的示例,请参阅此 SO 线程:How to override the window.open functionality?

我意识到这不是您可能正在寻找的直接答案,但是在我认为这将是您必须采取的道路之前已经这样做了。要么覆盖window.open,要么直接开始修改编辑器对象。或者选项三,找另一个编辑器。

【讨论】:

我只是想确认您无法打开“迷你窗口”,正如您所说。 :) 无论我们是否实施您的建议,我都会向我的经理提出。谢谢。

以上是关于window.open 总是在 iPad 版 Mobile Safari 中打开新标签页的主要内容,如果未能解决你的问题,请参考以下文章

window.open(url,name)设置name属性后,在谷歌火狐等浏览器中均可在指定窗口打开,可是为啥在ie中不行

javascript使用window.open(url)方式实现下载文件功能,但却有时不能弹出下载框?

模态 UIViewController 总是在 iPad 上全屏显示。为啥?

如何在 Chrome 插件中访问任意网页中的 JavaScript 变量

在window.open打开的窗口里再用window.open办法打开一窗口

iPad 总是横向启动