|
|
@ -718,6 +718,11 @@ if (window.chrome) {
|
|
|
|
e.stopPropagation();
|
|
|
|
e.stopPropagation();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (e.message.middleClickURL) {
|
|
|
|
|
|
|
|
vAPI.lastMiddleClick = e.message;
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// blocking unwanted pop-ups
|
|
|
|
// blocking unwanted pop-ups
|
|
|
|
if (e.message.type === 'popup') {
|
|
|
|
if (e.message.type === 'popup') {
|
|
|
|
if (typeof vAPI.tabs.onPopup === 'function') {
|
|
|
|
if (typeof vAPI.tabs.onPopup === 'function') {
|
|
|
@ -769,6 +774,20 @@ if (window.chrome) {
|
|
|
|
safari.application.addEventListener('beforeNavigate', function(e) {
|
|
|
|
safari.application.addEventListener('beforeNavigate', function(e) {
|
|
|
|
// e.url is not present for local files or data URIs
|
|
|
|
// e.url is not present for local files or data URIs
|
|
|
|
if (e.url) {
|
|
|
|
if (e.url) {
|
|
|
|
|
|
|
|
// beforeNavigate fires twice when opening a link with
|
|
|
|
|
|
|
|
// middle click. Once with the same tab, second time with
|
|
|
|
|
|
|
|
// the new tab. This hack tries to ignore the first one.
|
|
|
|
|
|
|
|
if (vAPI.lastMiddleClick) {
|
|
|
|
|
|
|
|
if (e.target === safari.application.activeBrowserWindow.activeTab
|
|
|
|
|
|
|
|
&& e.timeStamp - vAPI.lastMiddleClick.timeStamp <= 500
|
|
|
|
|
|
|
|
&& e.url === vAPI.lastMiddleClick.middleClickURL) {
|
|
|
|
|
|
|
|
vAPI.lastMiddleClick = null;
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vAPI.lastMiddleClick = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vAPI.net.onBeforeRequest.callback({
|
|
|
|
vAPI.net.onBeforeRequest.callback({
|
|
|
|
name: 'canLoad',
|
|
|
|
name: 'canLoad',
|
|
|
|
target: e.target,
|
|
|
|
target: e.target,
|
|
|
|