有沒有人得到與PJAX或甚至常規的AJAX一樣正常工作。DISQUS和Pushstate AJAX或Hashbang
讓我們看看誰是這樣的人一些例子:
第一種是使用Hash爆炸的風格,第二個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
的事件拋出異常。
你可以把disqus放入iframe嗎? –
我曾考慮過這樣做。我嘗試過,但我有一些討厭的滾動問題,但我沒有真正努力嘗試。 –
我可能會放棄並做一個*「點擊這裏加載評論」*這將做一個完整的頁面重新加載。 –