使用以下代码,我可以在桌面浏览器上打开一个新窗口:
var thisWin = window;
var oauthWin = thisWin.open(data, 'twitter-oauth-window', 'location=0,status=0,width=800,height=400');
var lastUrl = oauthWin.location.href;
var meh = true;
var oauthInt = thisWin.setInterval(
function()
{
if (meh)
{
alert(
'\noauthWin.closed: ' + oauthWin.closed +
'\noauthWin.location: ' + oauthWin.location +
'\nthisWin.closed: ' + thisWin.closed +
'\nthisWin.location: ' + thisWin.location +
'\noauthWin===thisWin: ' + (oauthWin === thisWin));
meh = false;
}
// do more stuff here
}
);
在警报中的调试输出中:
oauthWin===thisWin: false
它应该是什么。但是,当在PhoneGap中运行相同的代码时,我得到以下内容:
oauthWin===thisWin: true
表示PhoneGap已在同一窗口中打开新网址,替换当前的HTML文档。
我希望单独打开新网址,并在满足某个条件时关闭它,然后恢复原来的网址。
这可以在PhoneGap中实现,以及如何实现?
谢谢!
答案 0 :(得分:0)
现在有了PhoneGap 2.3+,我无法以任何方式在Mobile Safari中打开网址。使用_blank不起作用,我尝试了window.open(url,'_ blank'),但现在使用InAppBrowser插件打开URL(这非常糟糕)。我觉得有趣的是,那个人使用了一个插件,所以我决定使用在iOS应用程序中打开URL的标准方法编写一个打开URL的插件。您可以在this gist here: https://gist.github.com/typeoneerror/5097118上查看/获取代码。
这很简单。在我的示例中,我使用jQuery连接了一个名为“_blank”的类的链接,并使用插件调用打开了这些URL:
// execute the plugin called OpenUrl, signature:
// exec(successCallback, errorCallback, pluginName, pluginMethod, params)
cordova.exec(success, error, "OpenUrl", "openUrl", [url]);
我确信您可以轻松地为您需要的每个平台重写插件。这个是特定于iOS的。