我去年使用Phonegap Build的经历有些生疏,我遇到了问题。
这是config.xml
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="uk.co.example.app" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
<name>Example App</name>
<description>
The Example app
</description>
<author href="http://www.example.co.uk/" email="user@example.co.uk">
Example User
</author>
<content src="index.html" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="14" />
<plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" />
<plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0" />
<plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" />
<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="file://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
</widget>
www/index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />
<title>Example App</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<base href="/">
</head>
<body>
<div>
<div ng-app="app" ng-csp ng-cloak ng-class="{'reverse':reverse}">
<div loadingspinner id="loadingspinner"></div>
<div ng-view></div>
</div>
</div>
</body>
<script type="text/javascript" src="js/bundle.js"></script>
<script type="text/javascript" src="cordova.js"></script>
</html>
文件结构如下所示:
config.xml
www/
index.html
css/
style.css
js/
bundle.js
现在,CSS文件加载并正常工作,但Javascript文件没有。如果我设置了一些JS inline,那就行了,但是我尝试使用的任何外部Javascript,无论多么小或简单,都不起作用,即使它只是触发警报。但是,它在Web浏览器中工作正常,我相信路径是正确的 - 该文件位于www/js/bundle.js
。
我认为这与内容安全策略和白名单插件有关,因为自从我上次使用Phonegap Build开发应用程序以来,它已经被引入,看起来相当合乎逻辑,但我看不出问题是什么。远程调试器不显示任何错误,因此我不知道发生了什么。谁能看到我出错的地方?
如果有帮助,这是在Android上。我没有在iOS上尝试过,因为我没有iOS设备,所以它可能是特定于平台的。
答案 0 :(得分:1)
从代码中删除下一个元标记,所有元标记都可以使用:
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />
答案 1 :(得分:0)
将body脚本移动到body标签内:
<script type="text/javascript" src="js/bundle.js"></script>
<script type="text/javascript" src="cordova.js"></script>
</body>