是否有办法找到前一页的窗口(其他选项卡)

Is there a way to find the window of the previous page (other tab)?

本文关键字:窗口 其他 选项 一页 是否      更新时间:2023-09-26

如果您在新选项卡中打开链接(使用MMB或右键单击或首选方法),是否有办法从新选项卡window找到打开器window ?

  • window.opener
  • window.parent

也许这是不可能的,因为跟随一个链接通常会"覆盖"窗口,所以没有ref是可能的,但是因为我们有标签…也许……裁判可以吗?

我想打开的窗口做一个postMessage到原来的窗口,让它知道页面已经加载,所以原来的窗口可以更新链接样式。

我不制作这些页面,所以我不能访问后端或HTML打印。想想Greasemonkey:我给现有的网站添加了JS来改进它们。

我唯一能想到的是拦截点击事件,抓取URL,并将其传递给window.open和随后的postMessage调用返回的窗口对象。你用这些链接生成页面了吗?

在某些浏览器中,window.open(url,'_blank')将在选项卡中打开。

我认为有两种方法可以解决你的问题

第一个解决方案:Cookies

一个简单的方法是在每次点击链接时用当前页面的值设置一个cookie,你可以使用像这样的库来设置一个cookie,并在你点击后在下一页获得它。

$("a").click( function () {  
    $.setCookie("currentPage",document.URL);
});

在下一页你会得到这样的cookie

if($.getCookie("currentPage") != undefined )
   var previousPage = $.getCookie("currentPage");
第二个解决方案:服务器端语言

如果你使用的是像php这样的服务器端语言,很容易得到前一页的url:

<?php
    if (isset($_SERVER['HTTP_REFERER']))
      echo "<script> var previousPage='" . $_SERVER['HTTP_REFERER'] . "'; </script>";
?>

最后,要发布消息,您只需要测试previousPage变量是否设置:

if(previousPage != undefined)
{
   // Code to post your message
}