在PhoneGap中打开一个新窗口/文档

时间:2012-07-28 07:25:42

标签: javascript html cordova

使用以下代码,我可以在桌面浏览器上打开一个新窗口:

            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中实现,以及如何实现?

谢谢!

1 个答案:

答案 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的。