当前位置: 首页 > 知识库问答 >
问题:

javascript - 网站打开新页面时如果已存在则切换到现有的页面,否则重新打开一个页面,这要怎么实现?

仉联
2023-10-31

比如我点击某个链接要打开a页面,要判断是否存在已打开的a页面,这步我使用postMessage来实现通讯,可以实现判断是否已打开,但是要怎么切换到已打开的a页面吗?

共有3个答案

夏嘉德
2023-10-31
可以尝试利用window.open方法两个参数 (url,name)var examplePage = window.open("", "examplePage");//判断当前name的网页是否存在 if (examplePage) {  examplePage.focus();//存在聚焦跳转} else {  //不存在就打开新页面  examplePage = window.open("https://www.example.com", "examplePage");}
姚鹤龄
2023-10-31

web API 只能做到监听,做不到主动切换

如果是 chrome 插件开发,可以尝试 chrome tabs

change-chrome-tab-with-javascript

孙成化
2023-10-31

要实现这个功能,你可以使用HTML的窗口对象(window object)和JavaScript。你可以通过检查窗口对象的属性来检查是否已经打开了一个页面,并根据需要切换到已打开的页面。

你可以使用 window.open() 函数来打开一个新的页面,并使用 window.name 属性来给新窗口指定一个名字。然后,你可以使用 window.getComputedStyle(window) 来检查当前窗口的名字是否和你打开的新窗口的名字相同,从而判断是否已经打开了一个页面。

如果你想切换到已打开的页面,你可以使用 window.open() 函数传入已经打开的窗口的名字作为第一个参数,并且设置第二个参数为 true,这样就可以强制切换到已打开的窗口。

下面是一个简单的示例代码:

function openOrSwitchToPage(url) {  // 获取当前窗口的名字  const currentWindowName = window.name;  // 尝试切换到已打开的窗口  try {    const existingWindow = window.open('', currentWindowName, 'noopener');    existingWindow.opener = null; // 设置打开者为空,避免报安全警告    existingWindow.location = url; // 切换到已打开的窗口的地址    return; // 已经切换到已打开的窗口,直接返回  } catch (e) {    // 忽略异常,继续打开新页面  }  // 如果没有已打开的窗口,打开新页面  window.open(url, currentWindowName, 'noopener');}

在这个示例中,我们首先尝试切换到已打开的窗口。如果无法切换到已打开的窗口(可能是因为同源策略的限制或者其他原因),我们就打开一个新的窗口。在打开新的窗口时,我们指定了窗口的名字为当前窗口的名字,这样就可以在以后快速切换到这个窗口。

 类似资料:
  • 做web app,一个无法避开的问题就是转场动画;web是基于链接构建的,从一个页面点击链接跳转到另一个页面,如果通过有刷新的打开方式,用户要面对一个空白的页面等待;如果通过无刷新的方式,用Javascript移入DOM节点(常见的SPA解决方案),会碰到很高的性能挑战:DOM节点繁多,页面太大,转场动画不流畅甚至导致浏览器崩溃; mui的解决思路是:单webview只承载单个页面的dom,减少d

  • 本文向大家介绍JavaScript实现按Ctrl键打开新页面,包括了JavaScript实现按Ctrl键打开新页面的使用技巧和注意事项,需要的朋友参考一下 (译者注: 本文解决的是按 Ctrl键时使用JS打开新页面的问题) 在简化的HTML5规范中,允许在 A 标签内包含多个 DIV 和/或其他块级元素. 现在只要用 <a> 标签包住块元素,就能搞定原来需要用JavaScript来监听并调用 wi

  • ap.pushWindow(OPTION | url) pushWindow 用来打开一个新的页面,自带转场动画。可直接传入一个字符串作为 OPTION.url 参数。 OPTION 参数说明 参数 类型 必填 描述 url String 是 要打开的页面url data Object 否 url的参数,会以 query string 跟在 url 后面。在打开的新页面里可以用 ap.parseQ

  • pushWindow pushWindow用来打开一个新的页面,系统自带转场动画。不允许跨appId打开其他离线应用的虚拟域名页面(可换用startApp接口)。 scheme跳转请尽量使用location.href而不是pushWindow。 与location.href的区别,类同于PC浏览器的新开标签页,每个window都是一个新的标签页,因此原页面仅仅是被压到后台,状态始终保持,JS也会继

  • 你想做的第一件事也许是使用WebDriver打开一个链接。 常规的方法是调用 get 方法: driver.get("http://www.google.com") WebDriver 将等待,直到页面完全加载完毕(其实是等到 onload 方法执行完毕), 然后返回继续执行你的脚本。 值得注意的是,如果你的页面使用了大量的Ajax加载, WebDriver可能不知道什么时候页面已经完全加载。

  • 本文向大家介绍C#实现Winform中打开网页页面的方法,包括了C#实现Winform中打开网页页面的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现Winform中打开网页页面的方法。分享给大家供大家参考。具体实现方法如下: 1、首先比较简单的我们知道有类似的方法如下 2、比较灵活一点,可以定义窗口大小,我们要实现网页中脚本打开页面的方法,即window.open 那么,我们