有没有办法找到上一页的窗口(其他标签)?

时间:2014-07-27 19:35:38

标签: javascript window postmessage

如果您在新标签页中打开链接(但是使用MMB或右键单击或首选方法),是否可以通过新标签window找到开场白window?这些都不起作用:

  • window.opener
  • window.parent

也许这是不可能的,因为通常关注链接会覆盖'窗口,所以没有参考可能,但因为我们有标签...也许......参考可能吗?

我希望打开的窗口对原始窗口执行postMessage以让它知道页面已加载,因此原始窗口可以更新链接样式。

我不会制作这些页面,因此我无法访问后端或HTML printage。想想Greasemonkey:我将JS添加到现有网站以改进它们。

2 个答案:

答案 0 :(得分:1)

我唯一能想到的是拦截click事件,抓取URL,并将其传递给返回的窗口对象上的window.open和后续postMessage调用。您是否使用这些链接生成页面?

在某些浏览器中,window.open(url,'_blank')会在标签中打开。

答案 1 :(得分:0)

我认为您的问题有两种解决方案

第一个解决方案:Cookies

一种简单的方法是每次点击一个链接时设置一个包含当前页面值的cookie,你可以使用library like this one设置一个cookie,然后点击这样就在下一页中获取它< / p>

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

在下一页中,您只需获得此类Cookie

if($.getCookie("currentPage") != undefined )
   var previousPage = $.getCookie("currentPage");

第二种解决方案:服务器端语言

如果您使用像php这样的服务器端语言,很容易获得上一页的网址:

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

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

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