首页 > 解决方案 > 科尔多瓦 Jquery 和 javascript 无法运行

问题描述

我正在尝试使用 Cordova 构建一个应用程序。可悲的是,我的 javascript 由于某种原因无法工作......有人可以帮助解决这个问题吗?

我在 index.html 中拥有的所有(现在)

    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
        <meta name="color-scheme" content="light dark">
        <link rel="stylesheet" href="css/index.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <title>Hello World</title>
    </head>
    <body>
    <div class="app">
        <h1 id="title">Test</h1>
        <p id="change">The <span class="blink">best</span> app</p>
        <button id="btn">Change content of all p elements</button>
    </div>
    <script src="js/test.js"></script>
    </body>

在 js/test.js 中:

$("#btn").click(function(){
  $("#change").html("<b>Hello world!</b>");
});

所以不应该有太多可能出错的地方,除非它确实......

编辑:即使是普通的 Javascript 也行不通?

标签: javascriptjquerycordova

解决方案


正如控制台消息所阐明的,您的内容安全策略正在阻止外部 jquery 脚本。您需要在 CSP 中允许该外部脚本。为此,您需要更改此元标记

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;script-src https://ajax.googleapis.com">

我们刚刚添加了一个script-src规则来将我们的 jquery 脚本列入白名单。

要了解更多信息,您可以查看此帖子


推荐阅读