From d150eb6d1cda27f90cea1bf22c1fb9851d8e005f Mon Sep 17 00:00:00 2001 From: Deathamns Date: Sun, 2 Nov 2014 19:02:00 +0100 Subject: [PATCH] Use different page navigation detection for Safari The beforeNavigate event wasn't reliable (sometimes didn't fire, sometimes fired unnecessary when opening a link with the middle click - which had a workaround previously, but that's also removed by this commit). When the event didn't fire, the bindTabToPageStats method didn't run, and the requests related to the tab weren't blocked. --- src/js/vapi-client.js | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/js/vapi-client.js b/src/js/vapi-client.js index 135a95d..071f813 100644 --- a/src/js/vapi-client.js +++ b/src/js/vapi-client.js @@ -256,7 +256,13 @@ if (self.chrome) { var response = safari.self.tab.canLoad(e, details); if (!response) { - e.preventDefault(); + if (details.type === 'main_frame') { + window.stop(); + throw Error; + } + else { + e.preventDefault(); + } return false; } // local mirroring, response is a data: URL here @@ -350,20 +356,11 @@ if (self.chrome) { self.addEventListener('contextmenu', onContextMenu, true); - self.addEventListener('mouseup', function(e) { - if (e.button !== 1) { - return; - } - - e = document.evaluate('ancestor-or-self::a[@href]', e.target, null, 9, null).singleNodeValue; - - if (e && /^https?:$/.test(e.protocol)) { - safari.self.tab.canLoad(beforeLoadEvent, { - middleClickURL: e.href, - timeStamp: Date.now() - }); - } - }, true); + // 'main_frame' simulation + onBeforeLoad(beforeLoadEvent, { + url: window.location.href, + type: 'main_frame' + }); } })();