点击打开浏览器窗口,窗口已存在,跳转到已有窗口,不存在则新开窗口

文章讲述了如何通过修改`window.open()`函数的使用方式,先检查是否存在与特定名称关联的窗口,如果存在则在该窗口加载页面,否则新开窗口。这种方法提高了浏览器标签管理效率,但可能因浏览器限制无法确保页面在已有窗口加载。
摘要由CSDN通过智能技术生成

点击打开浏览器窗口,窗口已存在,跳转到已有窗口,不存在则新开窗口

可以通过以下方法实现:

window.open()的第二个参数windowName。
给windowName一个值,然后每次打开时,不会新创建浏览器标签,而是跳转到已存在的标签页。

1.原代码
 const openUrl = (dd, record) => {
    let _record = {
      objId: record.id,
      questionnaireId: dd.mealId,
      objType: dd.questionnaireType,
    }
        
    switch (dd.questionnaireType) {
      case "A":
        const AUrl = `/A/Z?surveyId=${selectProject.id}&queId=${dd.id}&stkey=${record.key}`
        window.open(AUrl , "_blank")
        break;
      case 'B':
        const BUrl = `/A/X?surveyId=${selectProject.id}&frekey=${record.key}`
        window.open(BUrl , "_blank")
        break;
    }
  }
2.修改后

首先尝试检查是否有与指定名称匹配的窗口,如果有则尝试在该窗口中加载指定页面,否则将新开一个窗口加载页面。
需要注意的是,由于浏览器行为的限制,无法保证能够在已有窗口中加载页面,因此代码只是模拟了这种行为。

  const openUrl = (dd, record) => {
    ....
    let existingWindow = null;
    // 检查是否有与指定名称匹配的窗口(record.name链接的唯一标识)
    if (record.name) {
      existingWindow = window.open('', record.name);
    }
    if (existingWindow && !existingWindow.closed) {
      // 已存在窗口,跳转到指定页面
      switch (qn.questionnaireType) {
        case 'A':
          const AUrl = `/A/Z?surveyId=${selectProject.id}&queId=${dd.id}&stkey=${record.key}`;
          existingWindow.location.href = AUrl ;
          //existingWindow 表示已存在的窗口对象,通过设置其 location.href 属性来使其加载新的 URL 地址。
          break;
        case 'B':
          const BUrl = `/A/X?surveyId=${selectProject.id}&frekey=${record.key}`;
          existingWindow.location.href = BUrl ;
          break;
      }
    } else {
      // 新开窗口
      switch (dd.questionnaireType) {
        case 'A':
          const AUrl = `/A/Z?surveyId=${selectProject.id}&queId=${dd.id}&stkey=${record.key}`;
          window.open(AUrl , '_blank');
          break;
        case 'B':
          const BUrl = `/A/X?surveyId=${selectProject.id}&frekey=${record.key}`;
          window.open(BUrl , '_blank');
          break;
      }
    }
  };

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值