【问题标题】:phonegap window.location=url not workingphonegap window.location=url 不工作
【发布时间】:2017-06-16 21:06:33
【问题描述】:

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

我遵循了 Phonegap“入门”指南,并在我的 Android 手机上安装了“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”...

【问题讨论】:

    标签: android cordova phonegap phonegap-cli


    【解决方案1】:

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

    运行您自己的应用程序而不是在 Phonegap 开发者应用程序上“预览”它需要做什么。

    这是运行您的应用程序的命令phonegap run android

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

    【讨论】:

    • 知道为什么开发工具不允许所有导航来促进开发吗?我觉得这很奇怪。
    • 我不知道,但在我看来,创建导航到 Cordova webview 内的外部站点的 Cordova/Phonegap 应用程序是一种不好的做法。要导航到外部站点,您需要使用 inAppBrowser 插件。
    • 总的来说我同意你的观点,但这是一个仅限开发人员使用的工具。
    • 现在我想起来了,因为 Phonegap Developer 应用程序是 Phonegap 应用程序,如果您执行 window.location = "https://google.com"; 并且他们允许这样做,整个 Phonegap Developer 应用程序将停止工作,因为您正在替换他们的代码与谷歌上的那个。所以他们可能试图阻止这种情况。
    猜你喜欢
    • 2017-01-09
    • 1970-01-01
    • 2023-02-05
    • 2011-08-30
    • 2020-06-30
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多