如何关闭多个浏览器选项卡?

时间:2018-04-03 10:14:32

标签: javascript richfaces

我正在使用RichFaces开发Web应用程序。

在主页上,有许多页面链接和每个链接点击需要在新标签页中显示相应的页面。

要求: -

当我点击退出按钮时,上面的页面链接tabs需要自动关闭。

我试过某种方式,但无法达到我的要求。

JSP: -

  <rich:panelMenuGroup>
      <rich:panelMenuItem>
          <h:outputLink value="#" onclick="return NewWindow('./../sample.jsp','Sample 1');">
              <h:outputText value="Sample"/>
          </h:outputLink>
      </rich:panelMenuItem>

      <rich:panelMenuItem>
          <h:outputLink value="#" onclick="return NewWindow('./../test.jsp','Test');">
              <h:outputText value="Test"/>
          </h:outputLink>
      </rich:panelMenuItem>
  </rich:panelMenuGroup>

  <h:commandLink value="Logout" action="--" onclick="closeTabs();"/> 

Java脚本: -

   var object = new Array(); 
   function NewWindow(mypage,myname)
    {
        var newwin = window.open(mypage,'_blank');
        object.push(newwin);
        if (window.focus)
          {
             newwin.focus()
          }
        return false;
    }

   function closeTabs()
    {
        for (i = 0; i < object.length; i++) 
          {
              object[i].close();
          }
    }

上面的代码工作正常,直到页面刷新,因为刷新时var object数组会自动重置。

是否有其他方法可以关闭标签。

请帮我这样做。

2 个答案:

答案 0 :(得分:1)

@Alexis Toby,我尝试使用你的代码,但在我评论的标记下面有例外。

我在下面整合了您的代码: -

    <script type="text/javascript" language="javascript">           
               var objectArray = new Array(); 
               function NewWindow(mypage,myname)
                {          
                   var newwin = window.open(mypage,'_blank');
                   objectArray.push(newwin);
                   localStorage.tabArray = JSON.stringify(objectArray);
                   if(window.focus)
                      {
                       newwin.focus()
                      }
                      return false;
                 }

                function closeWindow()
                  {
                    objectArray = JSON.parse(localStorage.tabArray); // In this part exception coming, why?
                    for(i = 0; i < objectArray.length; i++) 
                       {
                         objectArray[i].close();
                       }
                  }
   </script>

答案 1 :(得分:0)

我希望更新脚本可以解决您的问题。请试试这个。

  var object = new Array(); 
   function NewWindow(mypage,myname)
    {
        var newwin = window.open(mypage,'_blank');
        object.push(newwin);
        if (window.focus)
          {
             newwin.focus()
          }
          localStorage.tabArray = JSON.stringify(object);
        return false;
    }

   function closeTabs()
    {
    object = JSON.parse(localStorage.tabArray);
        for (i = 0; i < object.length; i++) 
          {
              object[i].close();
          }
    }