mirror of https://github.com/gorhill/uBlock.git
Improve disqus_embed.js scriptlet
Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/959 The problematic site does not declare the expected `disqus_shortname` global variable, so the scriptlet has been extended to deal with such occurrence.
This commit is contained in:
parent
11d24abea0
commit
2fcc41f641
|
@ -28,15 +28,31 @@
|
||||||
b.type = 'button';
|
b.type = 'button';
|
||||||
p.appendChild(b);
|
p.appendChild(b);
|
||||||
const loadDisqus = function(ev) {
|
const loadDisqus = function(ev) {
|
||||||
b.removeEventListener('click', loadDisqus);
|
b.remove();
|
||||||
p.removeChild(b);
|
let disqusScript =
|
||||||
const script = document.createElement('script');
|
document.querySelector('script[src$=".disqus.com/embed.js"]');
|
||||||
script.async = true;
|
let newScript;
|
||||||
|
if ( disqusScript !== null ) {
|
||||||
|
disqusScript.remove();
|
||||||
|
newScript = document.createElement('script');
|
||||||
|
if ( disqusScript.hasAttributes() ) {
|
||||||
|
const attrs = disqusScript.attributes;
|
||||||
|
for ( let i = 0; i < attrs.length; i++ ) {
|
||||||
|
const attr = attrs[i];
|
||||||
|
newScript.setAttribute(attr.name, attr.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if ( typeof self.disqus_shortname === 'string' ) {
|
||||||
|
newScript = document.createElement('script');
|
||||||
|
newScript.async = true;
|
||||||
|
newScript.src = `//${self.disqus_shortname}.disqus.com/embed.js`;
|
||||||
|
}
|
||||||
|
if ( newScript === undefined ) { return; }
|
||||||
const t = Date.now().toString();
|
const t = Date.now().toString();
|
||||||
script.src = '//' + window.disqus_shortname + '.disqus.com/embed.js?_=1457540' + t.slice(-6);
|
newScript.src += '?_=1457540' + t.slice(-6);
|
||||||
document.body.appendChild(script);
|
document.body.appendChild(newScript);
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
};
|
};
|
||||||
b.addEventListener('click', loadDisqus);
|
b.addEventListener('click', loadDisqus, { once: true });
|
||||||
})();
|
})();
|
||||||
|
|
Loading…
Reference in New Issue