phonegap window.location=url 不工作

phonegap window.location=url not working

我是 Phonegap 开发的新手,正在尝试一些看似简单但行不通的东西。

我遵循了 Phonegap "getting started" 指南,并在我的 Android phone 上安装了 "PhoneGap Developer" 应用程序。我创建了一个应用程序并使用 phonegap serve 为它提供服务。我删除了默认 js/index.js 并调用 app.initialize() 并将以下内容添加到 index.html 的位置:

<script>
    function onDeviceReady() {
        if (navigator.connection.type == Connection.NONE) {
            navigator.notification.alert(
              'An internet connection is required to continue');
        } else {
            navigator.notification.alert("HERE!");
            window.location = "https://google.com";
        }
    }
    document.addEventListener("deviceready", onDeviceReady, false);
</script>

如果我使用 Chrome 浏览器访问应用程序,它会正确加载,给出弹出消息,然后加载 Google。如果我尝试使用 Android PhoneGap Developer 应用程序,它会弹出消息,然后什么都不做。

在 config.xml 中,我尝试将所有内容设置得尽可能宽松,以使其正常工作:

<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

在服务器控制台上,我收到以下警告:

[phonegap] [console.warn] Content Security Policy has been modified to be: <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap: ws: https://ssl.gstatic.com;style-src 'self' 'unsafe-inline' data: blob:;media-src *;img-src * 'self' data: content:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;">

我对 CSP 政策不够熟悉,无法确定该政策是否真的限制加载 'google.com' 或不...

Phonegap 开发者应用程序本身就是一个 Phonegap 应用程序,因此它使用自己的 config.xml 而不是使用您的应用程序。您可以在 github repo 上看到它没有任何允许导航规则。因此它不允许导航到 google 或任何其他站点。

您必须对 运行 您自己的应用而不是 "preview" 在 Phonegap 开发者应用上执行的操作。

这是 运行 您的应用 phonegap run android

的命令

此外,您可能需要使用 phonegap plugin add cordova-plugin-whitelist 安装白名单插件或将 <plugin name="cordova-plugin-whitelist" spec="~1.3.2" /> 添加到 config.xml,因为 Phonegap Developer 应用程序已安装所有核心插件,但是您的应用可能没有它依赖于模板。