启用AdBlock时,出现以下错误:

  • AddThis:Uncaught Error: Must pass a string which will eval to aglobally accessible object where callbacks will be stored
  • MathJax: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.orghttps://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中,您可以按照以下步骤找到此类过滤器:

  • 右键单击页面
  • 上的任何位置
  • 在上下文菜单
  • 中选择“检查”
  • 在打开
  • 的窗口中切换到“Adblock Plus”标签
  • 重新加载页面以填充选项卡
  • 中的列表
  • 在类型为“CSP”的请求旁边找到过滤器。

  • 您可以访问EasyList(GitHubforumwebsite)以了解为什么他们添加了特定过滤器。他们还应该能够帮助您恢复所有损坏的功能。

    关于javascript - AdBlock阻止MathJax和AddThis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50870227/

    10-11 14:17