2

我正在使用 JavaScript 错误记录工具来记录我的移动网站上的任何 JavaScript 错误,并且我看到大量(一个月内 22,000 个)此错误:

Uncaught TypeError: Cannot read property '_pmh' of null

我可以从 addthis_widget.js 代码中看到它源自该脚本。

我还可以看出它只影响移动 Android 和 Google Chrome 浏览器,尤其是:

Android 4、Android 4.1、Android 4.2、Chrome 11、Chrome 18、Chrome 25、Chrome 26、Chrome 27、Chrome 移动版 18、Chrome 移动版 25、Chrome 移动版 26

我正在使用以下外部 JavaScript 包括:

http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b6adff375a64db9

并设置以下配置对象:

<script type="text/javascript">
    var addthis_config = {
        data_ga_property: 'UA-18721873-1', // real GA profile hidden for privacy purposes           
        data_ga_social: true
    };
</script>

我能做些什么来防止这些浏览器上多次出现此错误吗?

4

2 回答 2

2

我已经找到了这个问题的原因,它在下面的代码中。

if (window.addthis) {
   window.addthis = null;
   window._adr = null;
   window._atc = null;
   window._atd = null;
   window._ate = null;
   window._atr = null;
   window._atw = null;   
}

这是试图在页面之间动态移动时清理周围的对象以防止内存问题。

addThis 现在为这个问题提供支持,他们的支持部门给我发了以下链接:

http://www.addthis.com/blog/2013/05/07/a-brief-history-of-using-addthis-dynamically/#.Uklx4RCKyas

以及以下解释/信息:

连同来自同行等的其他信息,我提出了在从虚拟页面移动到虚拟页面时(例如在您的移动应用程序中)应该执行的正确代码。与其将任何 AddThis 相关对象清空,不如将它们单独放置。

当您希望我们的按钮使用的页面 URL 或标题(或任何其他 AddThis 配置选项)发生变化时,您应该执行我们的方法:

addthis.update(type, key, value)

它接受三个参数:类型、键、值。

类型是“共享”或“配置”。该密钥与您根据我们的 API 文档设置的密钥相同。您可能需要知道的只是两个键:“url”和“title”。该值当然是您希望这些选项具有的值。

在您使用该方法更新了所有需要更新的选项后,您需要调用此方法:

addthis.toolbox(cssSelector)

cssSelector 通常是“.addthis_toolbox”,但如果由于某种原因您不想刷新所有工具箱,您可以更具体地说明它。

一旦您对代码进行了这些更改,我相信我们的工具会为您正常工作,并且不会再出现与“空对象”相关的 javascript 错误。

您可以查看此 JSFiddle 以查看动态更改内容的示例:http: //jsfiddle.net/j5addthis/r6Utv/

于 2013-09-30T12:47:37.973 回答
0

我遇到了同样的问题,但似乎有一次,通过更改以下内容,只需将您正在使用的脚本从 addthis 升级到 3.0 版,就可以解决上述特定情况:

http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b6adff375a64db9

对此:

http://s7.addthis.com/js/300/addthis_widget.js#username=xa-4b6adff375a64db9

在这里阅读更多:http: //support.addthis.com/customer/portal/questions/1021465-addthis-widget-js-throwing-cannot-read-property-pmh-of-null-error-on-android-and-铬合金

请注意,正如我上面提到的,尽管 AddThis 帮助台表示应该可以工作,但即使使用 3.0 版,我的问题仍然存在。

于 2013-07-02T02:53:30.277 回答