0

我正在尝试通过 Javascript 在 Chrome 中启动自定义协议处理程序。我可以让应用程序启动,但这样做会创建一个弹出窗口,然后触发弹出窗口阻止程序。无论如何在没有弹出窗口的情况下启动应用程序?窗口关闭,但仍被视为弹出窗口。

这是我当前的代码:

    function setBrowser() {
        var userAgent = navigator.userAgent.toLowerCase();
        if (userAgent.indexOf("chrome") > -1) {
            //If Chrome launch without ActiveX involved
            var url = 'ABCProcessLaunch:-Domain mydomain -Args http://google.com -requirelogin true -method "chrome"';            
            setTimeout(window.close, 10);
            window.open(url, '_blank');
        }
    }
4

1 回答 1

0

我从您的电话中推断出window.close,这可能就是您首先需要在新窗口中打开链接的原因。

<iframe>改为在元素中打开自定义 URL 方案可能会带来一些运气。这样,您的setTimeout呼叫仍将在 10 秒后触发:

function setBrowser() {
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf("chrome") > -1) {
        //If Chrome launch without ActiveX involved
        var url = 'ABCProcessLaunch:-Domain mydomain -Args http://google.com -requirelogin true -method "chrome"';   
        var iframe = document.createElement("iframe");
        iframe.src = url;         
        setTimeout(window.close, 10);
        document.querySelector("body").appendChild(iframe);
    }
}
于 2021-08-25T18:00:41.937 回答