类别: 程序技术

百度分享通过ajax或js动态调用

摘要

通过ajax和js动态调用百度分享时,第二次及之后操作无法正常显示。解决方法是在调用百度分享js代码之前加if(window._bd_share_main) delete(window._bd_share_main);

问题描述

最近在做项目时,通过ajax方式或用js click事件动态加载百度分享功能时,出现第一次点击可以正常打开,第二次及之后点击就无法正常显示及使用分享功能。高人请跳过解决过程直接看解决方法。

解决过程

遇到问题后,首先在网上找解决方法,找到的几乎都是调用window._bd_share_main.init()方法进行初始化。但使用该方法后,提示“Uncaught TypeError: Cannot read property ‘init’ of undefined”,该方法无法解决问题。

既然网上找不到解决方法,就自己动手解决啦。通过不断的调试测试,发现第二次无法正常显示,是由于百度分享对象部分方法没有执行,导致分享代码div标签的“data-bd-bind”属性没有添加。既然是百度分享对象部分方法没有执行,那么就在执行分享代码之前,判断是否有百度分享对象,存在则删除,通过测试,该方法可行。

解决方法

在调用百度分享js代码之前加入以下代码:

 if(window._bd_share_main) delete(window._bd_share_main);

转载请注明:半亩方塘 » 百度分享通过ajax或js动态调用