Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/* globals browser, embedHelperLib */
if (!window.smartblockDisqusShimInitialized) {
// Guard against this script running multiple times
window.smartblockDisqusShimInitialized = true;
/**
* Finds a Disqus embed script URL in the document. Validates that
* the URL matches https://*.disqus.com/embed.js format.
*
* @returns {string|undefined} The script URL if found, undefined otherwise.
*/
function getDisqusEmbedScriptURL() {
for (const script of document.querySelectorAll("script[src]")) {
try {
const url = new URL(script.src);
if (
url.protocol === "https:" &&
url.hostname.endsWith(".disqus.com") &&
url.pathname === "/embed.js"
) {
return url.href;
}
} catch {
// Invalid URL, skip
}
}
return undefined;
}
// Get the script URL from the page. We can't hardcode it because the
// subdomain is site specific.
const scriptURL = getDisqusEmbedScriptURL();
if (scriptURL) {
embedHelperLib.initEmbedShim({
shimId: "DisqusEmbed",
scriptURL,
embedSelector: "#disqus_thread",
isTestShim: false,
});
}
}