我的Meteor应用程序中有一个按钮,可执行以下操作:
用户点击按钮> “事件调用方法”>方法使用http>调用外部api外部api返回链接上的单一标志>方法返回链接>事件打开新窗口(选项卡),链接为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;
}
});
答案 0 :(得分:2)
基本方法:
/redirect/token/
Template.onCreated
事件中,执行方法调用并将url和auth令牌获取到第三方站点。location = newSiteHref
(在新窗口中)并重定向用户