Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器弹出窗口被阻止,尽管用户单击按钮启动它_Javascript_Jquery_Yodlee - Fatal编程技术网

Javascript 浏览器弹出窗口被阻止,尽管用户单击按钮启动它

Javascript 浏览器弹出窗口被阻止,尽管用户单击按钮启动它,javascript,jquery,yodlee,Javascript,Jquery,Yodlee,我的网站上有一个按钮,允许用户使用弹出式登录屏幕通过Yodlee/Plaid登录他们的银行。问题是手机上的safari和chrome都阻止了弹出窗口。弹出窗口在桌面上工作。我已经读到,如果用户没有点击按钮来启动它们,或者从点击事件开始花费的时间超过1秒,safari和chrome会阻止所有弹出窗口 我的问题是,在启动弹出窗口之前,我的前端必须调用后端来检索令牌。因此,所有这些都需要一秒钟以上的时间来阻止弹出窗口。我是JS的新手,如果您能为解决此问题提供任何帮助,我将不胜感激 //调用后端以获取

我的网站上有一个按钮,允许用户使用弹出式登录屏幕通过Yodlee/Plaid登录他们的银行。问题是手机上的safari和chrome都阻止了弹出窗口。弹出窗口在桌面上工作。我已经读到,如果用户没有点击按钮来启动它们,或者从点击事件开始花费的时间超过1秒,safari和chrome会阻止所有弹出窗口

我的问题是,在启动弹出窗口之前,我的前端必须调用后端来检索令牌。因此,所有这些都需要一秒钟以上的时间来阻止弹出窗口。我是JS的新手,如果您能为解决此问题提供任何帮助,我将不胜感激

//调用后端以获取yodlee访问令牌
函数getAccessToken(){
$.ajax({
url:“/请求/访问令牌”,
标头:{'X-CSRFToken':csrf_token},
类型:“POST”,
数据:{'id':uuid},
数据类型:“json”,
上下文:document.body,
成功:功能(数据){
var accessToken=data['access_token'];
openFastLink();
}
});
}
//打开快速链接弹出窗口
函数openFastLink(){
window.fastlink.open({
fastLinkURL:'https://fl4.prod.yodlee.com.au/...',
accessToken:'承载人'+accessToken,
forceIframe:对,
iframesrolling:true,
参数:{
configName:'聚合'
},
onSuccess:函数(数据){
警报('帐户链接!')
}
},
“集装箱快速链接”);
}

链接帐户
您的点击没有激活打开,ajax返回是

如果您确定用户将需要访问令牌,只需获取它即可

我没有制作一个实际的代码片段,因为它在这里无论如何都不会运行

$(函数(){
让accessToken;
$.ajax({
url:“/请求/访问令牌”,
标题:{
“X-CSRFToken”:csrf\U令牌
},
类型:“POST”,
数据:{
'id':uuid
},
数据类型:“json”,
上下文:document.body,
成功:功能(数据){
accessToken=数据['access_token'];
$(“#链接帐户”).show()
}
});
//打开快速链接弹出窗口
$(“#链接帐户”)。在(“单击”,函数()上){
window.fastlink.open({
fastLinkURL:'https://fl4.prod.yodlee.com.au/...',
accessToken:'承载人'+accessToken,
forceIframe:对,
iframesrolling:true,
参数:{
configName:'聚合'
},
onSuccess:函数(数据){
$(“#链接帐户”).hide()
$(“#链接”).show()
}
},
“集装箱快速链接”);
});
});
.hide{
显示:无;
}
链接帐户
账户关联

window.fastlink.open
???openFastLink不是从用户操作执行的。像
onclick
这样的内联事件处理程序是。它们是记录事件的一种方式。我明白了,总是用jQuery来代替。我将如何启动“fastlink.open”API直接从用户单击调用它?对不起,我对js还不太熟悉@这很有效,谢谢。唯一的问题是我希望在用户单击“链接帐户”时以相同的操作获得访问令牌。每个访问令牌都是计费的,因此我想在检索之前确定用户的意图。然后尝试async false或promise await,像
+getAccessToken()
一样在需要的地方获取它