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 应用程序已安装所有核心插件,但是您的应用可能没有它依赖于模板。
我是 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 应用程序已安装所有核心插件,但是您的应用可能没有它依赖于模板。