0

我查看了有关 chrome 和自定义协议应用程序的另一个线程,但我无法解决我的疑问。在我的网络应用程序中,当您单击一个按钮时,它会触发一个带有网页的新选项卡(window.open(url,“_blank”))。新选项卡使用 url(另一个使用 https 协议的 Web 应用程序)打开。此 url 在加载时触发一个 javascript 函数,该函数会验证一些内容,然后生成自定义 url,例如 myurl://base64code,并以这种方式将其放入现有 iframe windows.frames['myframe'].location.href=自定义协议 URL。我尝试了不同的方式(location.replace,创建一个新的 iframe 并设置 url 等),但我总是遇到同样的问题。如果我刷新(ctrl f5)页面,它总是显示对话框,或者如果我打开链接并打开开发者控制台。但是,如果我单击我的按钮并在新选项卡中打开页面,则只有在我刷新 (ctrl+f5) 时它才起作用。这在 IE11 上完美运行,它直接启动应用程序。

任何想法为什么 chrome 和 edge 会这样工作?

更新:我找到了原因,是我使用了protocolcheck.js(https://gist.github.com/vladimirtsyupko/cfcd332476b16683bb0b)库。

首先,我尝试使用 timeoutHack 打开一个协议(它使用模糊事件),然后在失败后,它会触发另一个 url(在本例中为 https)并且不会出现对话框。我在 chrome > 85 https://bugs.chromium.org/p/chromium/issues/detail?id=1137801上发现了一个带有模糊事件的错误

提前致谢

4

0 回答 0