1
0
Fork 0
mirror of https://github.com/gorhill/uMatrix.git synced 2024-06-28 11:00:38 +12:00

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.
This commit is contained in:
Deathamns 2014-11-02 19:02:00 +01:00 committed by gorhill
parent ed1e23cfb1
commit d150eb6d1c

View file

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