From 8f0b3cf59211c8602eb4ea55f24316742cf11c9b Mon Sep 17 00:00:00 2001 From: Deathamns Date: Tue, 11 Nov 2014 17:14:54 +0100 Subject: [PATCH] Move MutationObserver shim Since it will be used only for older Safari versions, move it to Safari related code, so it doesn't pollute the content scripts. --- src/js/contentscript-end.js | 17 +---------------- src/js/vapi-client.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/js/contentscript-end.js b/src/js/contentscript-end.js index 871d93d76..03e2b2a21 100644 --- a/src/js/contentscript-end.js +++ b/src/js/contentscript-end.js @@ -30,7 +30,7 @@ if (vAPI.safari) { if (!/^https?:/.test(location.protocol)) { - throw "uBlock> contentscript-end.js > Skipping page: " + location.protocol + location.host; + throw "uBlock> contentscript-end.js > Skipping " + location.protocol; } } @@ -418,21 +418,6 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); return; } - if (!window.MutationObserver) { - window.MutationObserver = window.WebKitMutationObserver || window.MozMutationObserver; - - // dummy shim for older browsers - if (!window.MutationObserver) { - window.MutationObserver = function(handler) { - this.observe = function(target) { - target.addEventListener('DOMNodeInserted', function(e) { - handler([{addedNodes: [e.target]}]); - }, true); - }; - } - } - } - var ignoreTags = { 'link': true, 'LINK': true, diff --git a/src/js/vapi-client.js b/src/js/vapi-client.js index b406713bc..69bd09c11 100644 --- a/src/js/vapi-client.js +++ b/src/js/vapi-client.js @@ -197,6 +197,20 @@ if (self.chrome) { return; } + window.MutationObserver = window.MutationObserver || window.WebKitMutationObserver; + + if (!window.MutationObserver) { + // dummy, minimalistic shim for older versions (<6) + // only supports node insertions, but currently we don't use it for anything else + window.MutationObserver = function(handler) { + this.observe = function(target) { + target.addEventListener('DOMNodeInserted', function(e) { + handler([{addedNodes: [e.target]}]); + }, true); + }; + } + } + var beforeLoadEvent = document.createEvent('Event'); beforeLoadEvent.initEvent('beforeload');