Browse Source

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.
pull/2/head
Deathamns 10 years ago
committed by gorhill
parent
commit
d150eb6d1c
  1. 23
      src/js/vapi-client.js

23
src/js/vapi-client.js

@ -256,7 +256,13 @@ if (self.chrome) {
var response = safari.self.tab.canLoad(e, details); var response = safari.self.tab.canLoad(e, details);
if (!response) { if (!response) {
if (details.type === 'main_frame') {
window.stop();
throw Error;
}
else {
e.preventDefault(); e.preventDefault();
}
return false; return false;
} }
// local mirroring, response is a data: URL here // local mirroring, response is a data: URL here
@ -350,20 +356,11 @@ if (self.chrome) {
self.addEventListener('contextmenu', onContextMenu, true); 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()
// 'main_frame' simulation
onBeforeLoad(beforeLoadEvent, {
url: window.location.href,
type: 'main_frame'
}); });
}
}, true);
} }
})(); })();
Loading…
Cancel
Save