Blocks the online_current.js script from loading
// ==UserScript==
// @name Block online_current.js
// @namespace https://instructure-uploads.s3.amazonaws.com/
// @version 1.0
// @description Blocks the online_current.js script from loading
// @match *://*.instructure.com/*
// @match *://instructure-uploads.s3.amazonaws.com/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function() {
var observer = new MutationObserver(function(mutations, observer) {
var scripts = document.querySelectorAll("script[src*='online_current.js']");
scripts.forEach(script => {
script.remove(); // Remove the script if found
console.log("Blocked: " + script.src);
});
});
observer.observe(document, { childList: true, subtree: true });
// Prevent the script from being added dynamically
const originalCreateElement = document.createElement;
document.createElement = function(tagName, options) {
if (tagName.toLowerCase() === 'script') {
const scriptElement = originalCreateElement.apply(this, arguments);
Object.defineProperty(scriptElement, 'src', {
set: function(value) {
if (value.includes('online_current.js')) {
console.log("Blocked script injection: " + value);
return;
}
scriptElement.setAttribute('src', value);
},
get: function() {
return scriptElement.getAttribute('src');
}
});
return scriptElement;
}
return originalCreateElement.apply(this, arguments);
};
})();