我有一个按钮,需要在调用第三方库之前单击时获取数据,该库最终会打开一个弹出窗口。
我遇到的问题是,它可以在Chrome中运行,但在Firefox和Safari中无法运行,因为弹出窗口被其弹出窗口阻止程序阻止了。
Avoid browser popup blockers包含一个变通办法,但是它对我不起作用,因为我自己没有实例化弹出窗口(第三方库可以)
是否可以让Firefox和Safari识别点击> 获取(承诺)为用户发起的操作,从而不会触发弹出窗口阻止程序?
注意:包含以下代码段是为了提高可读性,但是使用StackOverflow代码段工具时,该代码段的行为不符合预期。 它可以在以下JSFiddle中复制:https://jsfiddle.net/jwrLgqs3/
function thirdPartylibraryThatOpensWindow(params) {
window.open(params.url);
}
document.querySelector('button').addEventListener('click',async () => {
const response = await fetch('https://dog.ceo/api/breeds/image/random');
const data = await response.json();
thirdPartylibraryThatOpensWindow({url: data.message});
});
<button>Promise Button</button>
编辑:我在MacOS Mojave(10.14.6)上使用Firefox 70.0.1
编辑:更新以修复在Safari中运行的语句,但不能运行
编辑:在Opera 64中工作