From 94650e260e70bb08089a55d2d7871479bacb97aa Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 14 Aug 2020 09:52:20 -0400 Subject: [PATCH] Fix nowoif decoy Related issue: - https://github[.]com/uBlockOrigin/uAssets/issues/6019 --- .../window.open-defuser.js | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/web_accessible_resources/window.open-defuser.js b/src/web_accessible_resources/window.open-defuser.js index 6a0f24689..48b880ef1 100644 --- a/src/web_accessible_resources/window.open-defuser.js +++ b/src/web_accessible_resources/window.open-defuser.js @@ -40,7 +40,7 @@ targetResult = false; pattern = pattern.slice(1); } - autoRemoveAfter = parseInt(arg2); + autoRemoveAfter = parseInt(arg2, 10); if ( isNaN(autoRemoveAfter) ) { autoRemoveAfter = -1; } @@ -66,17 +66,18 @@ return target.apply(thisArg, args); } if ( autoRemoveAfter < 0 ) { return null; } - const iframe = document.createElement('iframe'); - iframe.src = url; - iframe.style.setProperty('display','none', 'important'); - iframe.style.setProperty('height','1px', 'important'); - iframe.style.setProperty('width','1px', 'important'); - document.body.appendChild(iframe); - setTimeout(( ) => iframe.remove(), autoRemoveAfter * 1000); - if ( arg3 === '' ) { return iframe.contentWindow; } - return new Proxy(iframe.contentWindow, { + const decoy = document.createElement('object'); + decoy.data = url; + decoy.style.setProperty('height','1px', 'important'); + decoy.style.setProperty('position','fixed', 'important'); + decoy.style.setProperty('top','-1px', 'important'); + decoy.style.setProperty('width','1px', 'important'); + document.body.appendChild(decoy); + setTimeout(( ) => decoy.remove(), autoRemoveAfter * 1000); + return new Proxy(decoy.contentWindow || decoy , { get: function(target, prop) { log('window.open / get', prop, '===', target[prop]); + if ( prop === 'closed' ) { return false; } return target[prop]; }, set: function(target, prop, value) {