From 4df265b15ff54b73fee6817bb75ee6d8b1377aff Mon Sep 17 00:00:00 2001 From: Deathamns Date: Wed, 29 Oct 2014 17:35:37 +0100 Subject: [PATCH] Badge number sometimes disappeared in Safari --- src/js/vapi-client.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/js/vapi-client.js b/src/js/vapi-client.js index e9bfd63..a58ed14 100644 --- a/src/js/vapi-client.js +++ b/src/js/vapi-client.js @@ -187,6 +187,9 @@ if (window.chrome) { return; } + var beforeLoadEvent = document.createEvent('Event'); + beforeLoadEvent.initEvent('beforeload'); + var linkHelper = document.createElement('a'); var onBeforeLoad = function(e, details) { if (e.url && e.url.slice(0, 5) === 'data:') { @@ -274,8 +277,6 @@ if (window.chrome) { document.removeEventListener('DOMSubtreeModified', firstMutation, true); firstMutation = null; var randomEventName = parseInt(Math.random() * 1e15, 10).toString(36); - var beforeLoadEvent = document.createEvent('Event'); - beforeLoadEvent.initEvent('beforeload'); window.addEventListener(randomEventName, function(e) { var result = onBeforeLoad(beforeLoadEvent, e.detail); @@ -342,6 +343,21 @@ if (window.chrome) { }; window.addEventListener('contextmenu', onContextMenu, true); + + window.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); } })();