首页 > 解决方案 > 简单的 Javascript 未在 Cordova Android 应用程序中显示;我有 CSP 元标记,没有 CSP 错误

问题描述

在我的 Cordova Android 应用程序中,我需要一些内联 javascript 来访问本地存储。在测试中,我发现我不能在我的 PHP 部分中包含任何可以工作的输出 javascript。即使在 PHP 文件的开头添加一个简单的警报脚本也不会在浏览器中呈现,即使我可以在 Chrome 开发工具 Elements 中看到该代码。如果我将相同的脚本放在应用程序的 index.html 文件中,它就可以工作。

此外,在 PHP 生成部分中,我动态生成了 onClick 按钮,这些按钮调用添加key-valueslocal storage. 他们工作正常。我可以在 Chrome 开发工具中看到这些条目。

我在 中有一个内容安全策略元数据index.html,并且尝试了许多组合,即使没有CSP出现任何错误。

几天来,我一直在阅读并尝试建议的修复方法。

这有效:

PHP页面:

    echo ' <button id='; 
    echo "'$row1[idNodes]'";
    echo ' class="buttonClass" type="button" value=';
    echo "'$row1[idNodes]'";
    echo ' onclick="setStorage(this.value)">';
    echo '<div id=img';
    echo "$row1[idNodes]";
    echo '>';
    echo '<img src=img/cards.png height=20 width=20>';
    echo '</div>';
    echo '</button> ';

在 index.js 中:

function setStorage(val) {
document.addEventListener("deviceready", function(){
localStorage.setItem(val,"1");
}, false);
var imgswap = "img" + val;
console.log(imgswap);
document.getElementById(imgswap).innerHTML = "<img src=img/shovel.png height=25 width=25>";
}

这会在index.html页面内部呈现,但不会在 php 页面内部呈现,当呈现时,它只是 html 页面本身内部的一个字符串:

<script>
    console.log('Test');
</script>
<?php ...

浏览器输出图像:untweeps.org/img/code.jpg 在浏览器输出图像中,您可以看到三个脚本,但只有一个带有 Test1 的脚本有效。Test3 是动态生成的,另外两个是静态编码的。

在开发工具控制台中没有收到任何错误消息。我希望能够使用 JS 读取本地存储值并像在 set 函数中那样交换图像,但是我还不能运行一个简单的脚本。我错过了什么?

标签: javascriptphpcordovacontent-security-policy

解决方案


推荐阅读