启用AdBlock时,出现以下错误:
Uncaught Error: Must pass a string which will eval to aglobally accessible object where callbacks will be stored
Uncaught EvalError: Refused to evaluate a string asJavaScript because 'unsafe-eval' is not an allowed source of scriptin the following Content Security Policy directive: "script-src'self' * 'unsafe-inline'".
禁用AdBlock后,一切正常。
问题出现在几个星期前。
即使启用了AdBlock,也可以在使用MathJax的网站上正常运行:https://www.mathjax.org和https://math.stackexchange.com/
可能发生了某些变化,我需要正确更改代码。怎么样?
提前致谢。
最佳答案
这两个错误都涉及相同的内容安全策略(CSP)问题,即不允许不安全的eval()
调用。在传统技术不足的情况下,AdBlock和Adblock Plus等广告拦截器最近开始使用CSP(请参阅Adblock Plus filter options)。
我只能在emathhelp.net上重现它。在那里,我能够找到过滤器||emathhelp.net^$csp=script-src 'self' * 'unsafe-inline'
对此负责,该过滤器已添加到EasyList广告阻止列表on May 15中。在Adblock Plus中,您可以按照以下步骤找到此类过滤器:
您可以访问EasyList(GitHub,forum,website)以了解为什么他们添加了特定过滤器。他们还应该能够帮助您恢复所有损坏的功能。
关于javascript - AdBlock阻止MathJax和AddThis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50870227/