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 ed1e23cfb1
commit d150eb6d1c

@ -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'
});
}
})();

Loading…
Cancel
Save