Android Href尽管CSP和<;允许意图>;
我使用PhoneGap制作了一个应用程序(因此我使用HTML、JavaScript和CSS编写),在这个应用程序中,我编写了多个“href”函数,例如:Android Href尽管CSP和<;允许意图>;,android,html,cordova,phonegap-build,content-security-policy,Android,Html,Cordova,Phonegap Build,Content Security Policy,我使用PhoneGap制作了一个应用程序(因此我使用HTML、JavaScript和CSS编写),在这个应用程序中,我编写了多个“href”函数,例如: <a href="mailto:marcel.loman@apt-alu-products.com"> marcel.loman@apt-alu-products.com </a><br /> Website: <a href="http://www.apt-alu-products.com">
<a href="mailto:marcel.loman@apt-alu-products.com">
marcel.loman@apt-alu-products.com </a><br />
Website: <a href="http://www.apt-alu-products.com">www.apt-alu-products.com</a></p>
网站:
我在所有HTML文档的“head”部分添加了一些“Content security policy”行,以确保在android上运行apk时可以正常工作。此CSP如下所示:
<meta http-equiv="Content-Security-Policy"
content="default-src *;
style-src * 'self' 'unsafe-inline' 'unsafe-eval';
script-src * 'self' 'unsafe-inline' 'unsafe-eval';">
除此之外,我还在config.xml文件中的“小部件”部分之间添加了以下行:
(我知道出于安全原因不建议使用这些线路,但这是我最后的选择)
尽管有这些线路,但当我用这些线路构建一个APK并在我的Android手机上运行时,这些链接仍然不起作用
互联网上有很多关于这个主题的文章,但我读过的没有一篇能够解决我的问题。在没有插件的情况下直接将这些链接添加到应用程序的HTML中是行不通的。
http
链接实际上会将内容加载到你的网络视图中,取代你的应用程序代码
我假设您希望mailto
链接启动默认邮件客户端,并希望http
链接在系统浏览器中打开?假设如此,请执行以下操作:
首先,将inappbrowser插件添加到项目中:
cordova plugin add cordova-plugin-inappbrowser
然后添加一些代码以使用inappbrowser插件打开带有窗口的链接。打开而不是在Webview中打开链接的默认行为。(以下使用jQuery):
在没有插件的情况下直接将这些链接添加到应用程序的HTML中将不起作用。http
链接实际上会将内容加载到您的Web视图中,替换您的应用程序代码
我假设您希望mailto
链接启动默认邮件客户端,并希望http
链接在系统浏览器中打开?假设如此,请执行以下操作:
首先,将inappbrowser插件添加到项目中:
cordova plugin add cordova-plugin-inappbrowser
然后添加一些代码以使用inappbrowser插件打开带有窗口的链接。打开而不是在Webview中打开链接的默认行为。(以下使用jQuery):
非常感谢,我确实下载了一个插件。我从来没有这样做过,所以需要进一步研究。但是我选择安装[cordova插件白名单]()因为我不必使用查询部分。这也很好。非常感谢,我确实下载了一个插件。我从来没有这样做过,所以需要进一步研究。但是我选择安装[cordova插件白名单](),因为我不必使用查询部分。这也很好。
$(document).on('click', 'a[href^=http], a[href^=mailto]', function(e){
e.preventDefault(); // prevent Webview from following link
window.open($(this).attr('href'), '_system'); // Open with inappbrowser
});