在我的Cordova Android应用中,我需要一些内联JavaScript来访问本地存储。在测试中,我发现我无法在PHP部分中包含任何可以使用的输出javascript。即使将简单的警报脚本添加到PHP文件的开头也不会在浏览器中呈现,即使我可以看到Chrome Dev Tools,Elements中存在该代码。如果我将相同的脚本放入应用程序的index.html文件中,它将起作用。
此外,在PHP生成的部分中,我动态生成了onClick按钮,这些按钮调用了一个将key-values
添加到local storage
的JS函数。他们工作正常。我可以在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页面本身内的字符串的php页面内呈现:
<script>
console.log('Test');
</script>
<?php ...
浏览器输出的图像在: untweeps.org/img/code.jpg 在浏览器输出图像中,您可以看到其中有三个脚本,但是只有一个带有Test1的脚本有效。 Test3是动态生成的,其他两个是静态编码的。
在开发工具控制台中未收到任何错误消息。我希望能够使用JS读取本地存储值并像set函数一样交换图像,但是我还无法运行一个简单的脚本。我想念什么?