javascript - 打开需要异步查找的新窗口时避免弹出窗口阻止程序

标签 javascript meteor popup iron-router

我的 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;
  }
});

最佳答案

基本方法:

  1. 在您应用的点击事件中打开一个新窗口,其中包含指向您自己的应用的特定 URL
  2. 包含一个可以在新窗口中使用的路由参数,例如/redirect/token/
  3. 在该路由中使用的模板的 Template.onCreated 事件中,执行方法调用并获取第 3 方站点的 url 和身份验证 token 。
  4. 最后只需在同一代码(在新窗口中)中设置 location = newSiteHref 并重定向用户

关于javascript - 打开需要异步查找的新窗口时避免弹出窗口阻止程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482649/

相关文章:

javascript - 带样式的居中弹出窗口

javascript - 使用 Split 解析输入值

windows - DOS 批处理文件 - 显示带有两个选项的弹出消息

javascript - 在 Typescript 中访问类的属性

meteor - meteor 模板可以直接访问 session 变量吗?

meteor - 如何使用 meteor 帐户和自动生成添加/编辑用户

javascript - 告诉 Iron Router 不要拦截链接

Javascript:如何显示带有 <div> 内容的弹出窗口

javascript - Bootstrap 日期时间选择器定位

javascript - 当数据进入material表时如何调用UseEffect?