2012-07-28 52 views
1

用下面的代碼,我能夠在桌面瀏覽器中打開一個新的窗口:打開一個新窗口/文件中的PhoneGap

  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的開設在同一窗口中的新的URL,替換當前HTML文檔。

我希望單獨打開新的URL,並能夠在滿足某些條件時關閉它,然後還原爲舊的URL。

這可以在PhoneGap中實現嗎?

謝謝!

回答

0

現在隨着PhoneGap 2.3+,我無法以任何方式獲得在移動Safari中打開的URL。使用_blank不起作用,我嘗試了window.open(url,'_blank'),但現在使用InAppBrowser插件打開了URL(這非常糟糕)。我認爲有趣的是,那個人使用了插件,所以我決定編寫一個插件來使用iOS應用程序中打開URL的標準方法打開URL。您可以在this gist here: https://gist.github.com/typeoneerror/5097118上看到/獲取代碼。

這很簡單。在我的例子,我有線了那些所謂的一類「_blank」使用jQuery鏈接,打開與插件調用這些網址:

// execute the plugin called OpenUrl, signature: 
// exec(successCallback, errorCallback, pluginName, pluginMethod, params) 
cordova.exec(success, error, "OpenUrl", "openUrl", [url]); 

我敢肯定,你可以很容易地重寫插件您需要它的每個平臺上。這是iOS特有的。