从警报弹出窗口触发window.open

时间:2019-11-27 05:52:58

标签: javascript

我有一个ajax命令,在返回时我需要调用window.open(url, '_blank'),并且遇到了浏览器阻止此调用的情况(返回null)。

我知道我需要为此进行用户操作,并且可以显示模式“在新标签中打开”等带有“确定”按钮的功能,然后可以执行window.open,但是{{1 }}没有alert()处理程序,因此,如果我理解正确,将无法在这里工作。

我有什么选择?我是否必须编写代码或使用onclick带第三方弹出窗口来执行此操作? (有什么建议吗?)

2 个答案:

答案 0 :(得分:0)

这对我有用:

let openNewTab = function(){
  if(confirm("Open new tab?"))
  {
    window.open('https://www.google.com/', '_blank');
  }
}

Codepen链接:https://codepen.io/jeff-tian/pen/bGGPzrX

答案 1 :(得分:0)

似乎是真的。如果您不想编写弹出式代码,则可以使用ant-designTaro

此处的Taro示例:https://pa-ca.me/pages/cards/cards

enter image description here

代码在这里:https://github.com/Jeff-Tian/me/blob/654f7b144bf7fa82fc68e28320c51856d5f9b815/src/components/cards/index.tsx#L46

基本上首先尝试window.open,然后检查错误,如果出现错误,然后弹出:

const url = ajax('url')
try {
  window.open(url)
}catch(ex){
  showPopup({onConfirm: ()=>window.open(url)})
}