打开需要异步查找的新 window 时避免弹出窗口拦截器
Avoid popup blocker when opening new window that requires an async lookup
我的 Meteor 应用程序中有一个按钮可以执行以下操作:
用户点击按钮 > 事件调用方法 > 方法调用外部 api 使用 http > 外部 api returns 单点登录 link > 方法 returns link > 活动打开新的 window(选项卡),其中 link 为 url
我的问题是新选项卡被弹出窗口阻止程序阻止,即使它基于用户操作也是如此
这是活动代码:
Template.welcome.events({
'click #accessLms': function(e) {
e.preventDefault();
var submitButton = $('#accessLms').button('loading');
Meteor.call('getLmsLink', function(error, portalLink) {
if(error) {
sAlert.error(error.message);
submitButton.button('reset');
} else if(portalLink) {
window.open(
portalLink,
'_blank'
);
submitButton.button('reset');
}
});
}
});
方法如下:
Meteor.methods({
'getLmsLink': function () {
[set vars...]
try {
var response = HTTP.call( verb, wceaApiAddress + endPoint, {
headers: {
"Request-Time": timeStamp,
"Api-Key": key,
"Signature": hash
}
});
} catch(error) {
throw new Meteor.Error(501, 'There was a problem getting a link to the E-Learning Portal');
}
var result = JSON.parse(response.content);
var portalLink = result.records.accessLink;
return portalLink;
}
});
基本方法:
- 在您应用的点击事件中,打开一个新的 window,其中包含您自己应用的特定 url
- 包括一个可以在新的 window 中使用的路由参数,例如
/redirect/token/
- 在该路由中使用的模板的
Template.onCreated
事件中,执行方法调用并获取 url 和到第 3 方站点的身份验证令牌。
- 最后只需在同一代码中设置
location = newSiteHref
(在新的 window 中)并重定向用户
我的 Meteor 应用程序中有一个按钮可以执行以下操作:
用户点击按钮 > 事件调用方法 > 方法调用外部 api 使用 http > 外部 api returns 单点登录 link > 方法 returns link > 活动打开新的 window(选项卡),其中 link 为 url
我的问题是新选项卡被弹出窗口阻止程序阻止,即使它基于用户操作也是如此
这是活动代码:
Template.welcome.events({
'click #accessLms': function(e) {
e.preventDefault();
var submitButton = $('#accessLms').button('loading');
Meteor.call('getLmsLink', function(error, portalLink) {
if(error) {
sAlert.error(error.message);
submitButton.button('reset');
} else if(portalLink) {
window.open(
portalLink,
'_blank'
);
submitButton.button('reset');
}
});
}
});
方法如下:
Meteor.methods({
'getLmsLink': function () {
[set vars...]
try {
var response = HTTP.call( verb, wceaApiAddress + endPoint, {
headers: {
"Request-Time": timeStamp,
"Api-Key": key,
"Signature": hash
}
});
} catch(error) {
throw new Meteor.Error(501, 'There was a problem getting a link to the E-Learning Portal');
}
var result = JSON.parse(response.content);
var portalLink = result.records.accessLink;
return portalLink;
}
});
基本方法:
- 在您应用的点击事件中,打开一个新的 window,其中包含您自己应用的特定 url
- 包括一个可以在新的 window 中使用的路由参数,例如
/redirect/token/
- 在该路由中使用的模板的
Template.onCreated
事件中,执行方法调用并获取 url 和到第 3 方站点的身份验证令牌。 - 最后只需在同一代码中设置
location = newSiteHref
(在新的 window 中)并重定向用户