2014-09-13 61 views
1

我目前正在使用科爾多瓦框架的Windows Phone 8.0和Windows Phone 8.1的hyrbid移動應用程序。有一種情況是我需要使用應用內瀏覽器來啓動登錄頁面。window.open返回null在Windows Phone 8

我用了下面的javascript代碼。

var authWindow = window.open('http://www.mylogin.com', 'mywindow', 'location=yes,toolbar=yes,clearsessioncache=yes'); 

雖然窗口打開正常,但我得到空作爲窗口對象的引用在這裏。我需要引用來在打開的窗口上執行其他操作。

在進一步的研究中,我發現該問題也存在於桌面IE11中,我們必須禁用保護模式。一旦我做到了,並在桌面IE11上運行代碼,它工作得很好。

我不知道如何在我的方案中實現相同。我需要在瀏覽器控件上進行更改嗎?你如何解決這個問題?

回答

0

在Windows Phone上將外部頁面打開爲Javascript Mobile App是一個真正的問題。在Android和IOS上,你只需使用「windows.open」,你就可以走了。但是在WP上,我們將需要創建一個C#插件。

在我的應用程序,我做了以下內容:

1 - 你需要調用插件的JavaScript函數。

JavaScript調用

function openExternalURL(theURL) { 
    cordova.exec(function() { }, function() { }, "yourApp.main.plugins.YourPluginClass", "openURLWithNative", [theURL); 
}; 

2 - 現在你需要實現調用正確的URL的Windows Phone瀏覽器中的C#類。對於它,你應該創建一個cs文件(在本例中它的名字是YourPluginClass.cs):

YourPluginClass.cs(C#)

namespace yourApp.main.plugins 
{ 
    class YourPluginClass : BaseCommand 
    { 
     public void openURLWithNative(string uri) 
     { 
      WebBrowserTask task = new WebBrowserTask(); 
      string optVal = JsonHelper.Deserialize<string[]>(uri)[0]; 

      task.Uri = new Uri(optVal); 
      task.Show(); 
     } 
    } 
} 

這樣,您就可以打開任何外部Windows Phone上的URL,如Android和IOS。

希望它有幫助。最好的祝福!