LEFT | RIGHT |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 category: "webRequest", | 97 category: "webRequest", |
98 url: url, | 98 url: url, |
99 type: type, | 99 type: type, |
100 pageId: documentInfo.pageId, | 100 pageId: documentInfo.pageId, |
101 frameId: documentInfo.frameId | 101 frameId: documentInfo.frameId |
102 } | 102 } |
103 )) | 103 )) |
104 { | 104 { |
105 event.preventDefault(); | 105 event.preventDefault(); |
106 | 106 |
107 // Safari doesn't dispatch all the expected events for elements that | 107 // Safari doesn't dispatch the expected events for elements that have been |
108 // have been prevented from loading by having their "beforeload" event | 108 // prevented from loading by having their "beforeload" event cancelled. |
109 // cancelled. "error" events are never dispatched, and since Safari 8 | 109 // That is a "load" event for blocked frames, and an "error" event for |
110 // "load" events are also not dispatched, when blocking frames. | 110 // other blocked elements. We need to dispatch those events manually here |
111 // We need to dispatch those events manually here to avoid breaking | 111 // to avoid breaking element collapsing and pages that rely on those event
s. |
112 // element collapsing and pages that rely on those events. | 112 setTimeout(function() |
113 if (type != "sub_frame" || parseInt(navigator.userAgent.match(/\bVersion\/
(\d+)/)[1], 10) >= 8) | 113 { |
114 { | 114 var evt = document.createEvent("Event"); |
115 setTimeout(function() | 115 evt.initEvent(eventName); |
116 { | 116 event.target.dispatchEvent(evt); |
117 var evt = document.createEvent("Event"); | 117 }, 0); |
118 evt.initEvent(eventName); | |
119 event.target.dispatchEvent(evt); | |
120 }, 0); | |
121 } | |
122 } | 118 } |
123 }, true); | 119 }, true); |
124 | 120 |
125 | 121 |
126 /* Context menus */ | 122 /* Context menus */ |
127 | 123 |
128 document.addEventListener("contextmenu", function(event) | 124 document.addEventListener("contextmenu", function(event) |
129 { | 125 { |
130 var element = event.srcElement; | 126 var element = event.srcElement; |
131 safari.self.tab.setContextMenuEventUserInfo(event, { | 127 safari.self.tab.setContextMenuEventUserInfo(event, { |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 messageProxy.handleResponse(event.message); | 422 messageProxy.handleResponse(event.message); |
427 break; | 423 break; |
428 case "proxyCallback": | 424 case "proxyCallback": |
429 backgroundPageProxy.handleCallback(event.message); | 425 backgroundPageProxy.handleCallback(event.message); |
430 break; | 426 break; |
431 } | 427 } |
432 } | 428 } |
433 } | 429 } |
434 }); | 430 }); |
435 })(); | 431 })(); |
LEFT | RIGHT |