我有一个自定义协议检查器,用于检查是否安装了协议。
对于 Safari(与 chrome 相同),它专注于一个元素,触发协议并监听 onblur。
但是,在 Safari 中,如果未安装该协议,浏览器会弹出一个警告 esc 弹出窗口,说:“Safari 无法打开页面,因为地址无效。” 依次触发 onblur 事件。
有没有人找到更好的方法来管理这个?如果需要,它可以是 Safari 特定的解决方案。
//Chrome (and default for other browsers)
function checkChrome(){
bodyElement.append("<input type='text' id='focusInput' style='background: transparent;border: none;height: 0px;width: 0px;' />");
var focusBodyElement = $('#focusInput')[0], temporaryResult = false;
focusBodyElement.focus();
focusBodyElement.onblur = function () {
updateResult(true);
return;
};
//will trigger onblur
location.href = protocolStr;
//Note: timeout could vary as per the browser version, have a higher value
setTimeout(function () {
focusBodyElement.onblur = null;
if (protocolSupport[protocolStr]===null) {
updateResult(false)
}
}, 1000);
}