有没有人让 Disqus 与 PJAX 甚至常规的#!
AJAX 一起正常工作。
让我们看一些这样做的人的例子:
第一个是使用 Hash bang 风格,第二个是 PJAX。现在单击这些站点,您会在 Disqus 中注意到您的 gravatar 图标消失了,如果您打开 javascript 控制台,您通常会收到错误和日志消息,因为该DISQUS
对象无法解除绑定。
我已经尝试过自己的随机黑客(这很困难,因为我找不到没有通过缩小混淆的 DISQUS js):
(function() {
if ( document.getElementById('my_disqus_script') && document.getElementById('disqus_thread') ) {
//var ds = document.getElementById('my_disqus_script');
//(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).removeChild(ds);
alert(window.location.href);
DISQUS.reset({
reload: true,
config: function() {
this.page.identifier = 'disqus_thread';
this.page.url = window.location.href + '#!disqus_thread';
}
});
}
else if (document.getElementById('disqus_thread')){
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.id = 'my_disqus_script';
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}
else {
var ds = document.getElementById('my_disqus_script');
if (ds)
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).removeChild(ds);
if (window['DISQUS']) {
alert('cleanup');
DISQUS.reset();
DISQUS.cleanup();
DISQUS = null;
}
}
})();
基本上我尝试了一堆清理技术,以便当我的 PJAX 加载新页面时它应该清理但我总是得到一些必然null
引发异常的事件。