javascript 点击功能导致内容安全策略错误
javascript click function causes Content Security Policy error
我的一个 chrome 扩展内容脚本正在对这样的元素执行点击功能
var currencySelectorLink = document.getElementById('switcher-info');
currencySelectorLink.click();
但是最后一行导致了以下错误:
拒绝 运行 JavaScript URL 因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要 'unsafe-inline' 关键字、散列 ('sha256-...') 或随机数 ('nonce-...')。请注意,哈希不适用于事件处理程序、样式属性和 javascript: 导航,除非存在 'unsafe-hashes' 关键字。
我现在花了好几个小时试图解决这个问题,也许你们中的一些人会知道如何解决它。我一定要触发这个点击事件,没办法
编辑:
经过更多调查后,我发现它发生了,因为 link 具有带内联 javascript:
的 href 属性
<a class="switcher-info notranslate" href="javascript:void(0)" id="switcher-info"></a>
有人知道如何绕过它吗?如果我这样做:
currencySelectorLink.href= '#' ;
然后错误消失了,但它破坏了网站功能并且此点击事件不完全符合预期的行为
<a href="javascript:void(0)"
代码所做的就是防止在 link 上跟随。你可以用同样的方式做得更漂亮:
currencySelectorLink.href= '#' ;
currencySelectorLink.addEventListener("click", function(event) {
event.preventDefault(); // Prevent default action (a following a link)
}, false);
注意。因为你调用 click()
你已经有了一些事件处理程序。您可以将 event.preventDefault();
插入其中,而不是添加第二个处理程序。并使用:
<a class="switcher-info notranslate" href="#" id="switcher-info"></a>
没有 javascript:void(0)
.
我的一个 chrome 扩展内容脚本正在对这样的元素执行点击功能
var currencySelectorLink = document.getElementById('switcher-info'); currencySelectorLink.click();
但是最后一行导致了以下错误:
拒绝 运行 JavaScript URL 因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要 'unsafe-inline' 关键字、散列 ('sha256-...') 或随机数 ('nonce-...')。请注意,哈希不适用于事件处理程序、样式属性和 javascript: 导航,除非存在 'unsafe-hashes' 关键字。
我现在花了好几个小时试图解决这个问题,也许你们中的一些人会知道如何解决它。我一定要触发这个点击事件,没办法
编辑: 经过更多调查后,我发现它发生了,因为 link 具有带内联 javascript:
的 href 属性<a class="switcher-info notranslate" href="javascript:void(0)" id="switcher-info"></a>
有人知道如何绕过它吗?如果我这样做:
currencySelectorLink.href= '#' ;
然后错误消失了,但它破坏了网站功能并且此点击事件不完全符合预期的行为
<a href="javascript:void(0)"
代码所做的就是防止在 link 上跟随。你可以用同样的方式做得更漂亮:
currencySelectorLink.href= '#' ;
currencySelectorLink.addEventListener("click", function(event) {
event.preventDefault(); // Prevent default action (a following a link)
}, false);
注意。因为你调用 click()
你已经有了一些事件处理程序。您可以将 event.preventDefault();
插入其中,而不是添加第二个处理程序。并使用:
<a class="switcher-info notranslate" href="#" id="switcher-info"></a>
没有 javascript:void(0)
.