4 回答
TA贡献1864条经验 获得超2个赞
<a onClick=hellYeah("xxx")>
<a id="link">
addEventListener
popup.js
document.addEventListener('DOMContentLoaded', function() { var link = document.getElementById('link'); // onClick's logic below: link.addEventListener('click', function() { hellYeah('xxx'); });});
TA贡献1853条经验 获得超18个赞
原因
内联JavaScript不会被执行。这一限制既禁止内联,也禁止内联。 <script>
砌块 和内联事件处理程序(例如: <button onclick="...">
).
如何检测
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src‘Self’chrom-扩展名:”。要么是‘不安全-内联’关键字,要么是散列(‘sha256-.’),或者是现在(‘none-.’)需要启用内联执行。
如何修复
<a onclick="handler()">Click this</a> <!-- Bad -->
onclick
<a id="click-this">Click this</a> <!-- Fixed -->
.js
popup.js
):
// Pure JS:document.addEventListener('DOMContentLoaded', function() { document.getElementById("click-this").addEventListener("click", handler);});// The handler also must go in a .js filefunction handler() { /* ... */}
DOMContentLoaded
<head>
<script src="popup.js"></script>
// jQuery$(document).ready(function() { $("#click-this").click(handler);});
放宽政策
问:
答:
没有任何机制可以放松对执行内联JavaScript的限制。特别是,设置脚本策略,其中包括 'unsafe-inline'
不会有任何效果。
最新情况:
从Chrome 46开始,可以通过在策略中指定源代码的base 64编码哈希来白化内联脚本。此散列必须以所使用的哈希算法(Sha 256、Sha 384或Sha 512)作为前缀。看见 散列用法 <script>
元素 举个例子。
onclick="code"
.
TA贡献1836条经验 获得超13个赞
我发现,通过使用调用的ID将脚本放在DIV之前,脚本无法工作。 如果脚本在另一个DIV中,它也不能工作。 脚本必须使用document.addEventListener(‘DOMContentLoade’)编写,函数() <body> <a id=id_page href ="#loving" onclick="load_services()"> loving </a> <script> // This script MUST BE under the "ID" that is calling // Do not transfer it to a differ DIV than the caller "ID" document.getElementById("id_page").addEventListener("click", function(){ document.getElementById("mainbody").innerHTML = '<object data="Services.html" class="loving_css_edit"; > </object>'; }); </script> </body> <div id="mainbody" class="main_body"> "here is loaded the external html file when the loving link will be clicked. " </div>
添加回答
举报