window.open在Windows Phone 8上返回null

时间:2014-09-13 06:48:04

标签: javascript cordova windows-phone-8

我目前正在使用cordova框架为Windows Phone 8.0和Windows Phone 8.1开发一个hyrbid移动应用程序。我需要使用应用内浏览器启动登录页面。

我使用了以下javascript代码。

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

虽然窗口打开正常,但我在此处获取null作为窗口对象的引用。我需要引用在打开的窗口上执行其他操作。

在进一步的研究中,我发现桌面IE11中也存在问题,我们必须禁用保护模式。一旦我做了它并在桌面IE11上运行代码它工作正常。

我不确定如何在我的场景中实现同样的目标。我需要在浏览器控件上更改任何设置吗?你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:0)

在Windows Phone上打开外部页面作为Javascript移动应用程序是一个真正的问题。在Android和IOS上,你只需使用“windows.open”就可以了。但在WP上,我们需要创建一个C#插件。

在我的应用上,我做了以下内容:

1 - 你需要一个调用插件的javascript函数。

Javascript调用

mysql -u xxxx -p xxxxxxxxx < dump_opt.sql 
Enter password: 
ERROR 1030 (HY000) at line 41: Got error -1 from storage engine

2 - 现在您需要实现一个使用正确的URL调用Windows Phone浏览器的C#类。为此,您应该创建.cs文件(在示例中,其名称为YourPluginClass.cs):

YourPluginClass.cs(C#)

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

这样,您就可以在Windows Phone上打开任何外部URL,例如Android和IOS。

希望它有所帮助。最诚挚的问候!

答案 1 :(得分:0)

在我这里有一些很好的工作经验:

window.open("about:blank", "newPage");调用之前执行AJAX,然后在调用之后通过调用window.open("http://google.com", "newPage");将URL添加到打开的窗口中。

相关问题