Javascript 在Chrome中使用内容安全策略时触发要调用的函数

Javascript 在Chrome中使用内容安全策略时触发要调用的函数,javascript,events,inline,content-security-policy,Javascript,Events,Inline,Content Security Policy,我对使用感兴趣,但是如何触发要调用的函数呢 我有一个共享的.js文件、一个长网页和一个短网页。(实际上,可以有任意数量的网页,但为了简洁起见,我将其保留在这里)每个网页都有自己的函数,可以在页面加载时调用。由于不允许使用内联脚本,JS可以只监听“ready”事件,然后扫描一些HTML标记,以知道应该使用哪个页面的函数。但是,等待“就绪”事件有一个限制,适用于较长的页面 在长网页的顶部是带有日历日期选择器的日期范围过滤器 <input name="date"/> <script

我对使用感兴趣,但是如何触发要调用的函数呢

我有一个共享的.js文件、一个长网页和一个短网页。(实际上,可以有任意数量的网页,但为了简洁起见,我将其保留在这里)每个网页都有自己的函数,可以在页面加载时调用。由于不允许使用内联脚本,JS可以只监听“ready”事件,然后扫描一些HTML标记,以知道应该使用哪个页面的函数。但是,等待“就绪”事件有一个限制,适用于较长的页面

在长网页的顶部是带有日历日期选择器的日期范围过滤器

<input name="date"/>
<script src="shared.js"></script>
<script>handleCalendarPicker()</script>
.. lots of HTML to load
<script>coolStuff()</script>

handleCalendarPicker()
.. 要加载的HTML很多
coolStuff()
这样,日历选择器几乎可以立即工作,即使页面尚未加载完毕

CSP通常不允许使用内联脚本,但我仍然希望在呈现某个元素时触发事件,甚至在触发DOM就绪事件之前。如何才能做到这一点


我必须使用带有getElementById的计时器,还是有一种方法可以在不允许CSP通常阻止的任意JS的情况下触发事件?

有几种方法可以实现这一点

我假设您允许
self
作为脚本src

而不是

<script>handleCalendarPicker()</script>
里面,然后你参考

<script src="foo.js"></script>
然后,可以使用上述nonce标记允许的内联脚本块:

<script nonce=EDNnf03nceIOfn39fn3e9h3sdfa>
  handleCalendarPicker()
</script>

(请注意,上面的散列不是来自您的代码。)

有几种方法可以实现这一点

我假设您允许
self
作为脚本src

而不是

<script>handleCalendarPicker()</script>
里面,然后你参考

<script src="foo.js"></script>
然后,可以使用上述nonce标记允许的内联脚本块:

<script nonce=EDNnf03nceIOfn39fn3e9h3sdfa>
  handleCalendarPicker()
</script>

(请注意,上面的散列不是来自您的代码。)

感谢您的概述。请注意,nonce和哈希白名单仅在中受支持。感谢您的概述。请注意,nonce和哈希白名单仅在中受支持。