Javascript 从另一个子窗口对焦子窗口

Javascript 从另一个子窗口对焦子窗口,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有如下这样的场景: 我有一个主窗口[main.html]。有三个链接称为Popup1、Popup2、Popup3。单击链接可分别打开Popup1窗口,Popup2窗口 <html> <head> <title>Popup Focus Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/j

我有如下这样的场景:

我有一个主窗口[
main.html
]。有三个链接称为Popup1、Popup2、Popup3。单击链接可分别打开
Popup1窗口
Popup2窗口

<html>
<head>
  <title>Popup Focus Example</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
  <script>
      var openWin = [];
      $(function(){
          $('#elem').on('click', 'a', function(){
              var index = $(this).index();
              var page = 'pop'+(index+1)+'.html';
              var w = window.open(page, $(this).attr('title'), '_blank');
              openWin[index] = w;

          });
      });
  </script>
</head>
<body>
  <div id="elem">
    <a href="javascript:void(0);" title="Pop 1">Pop 1</a>
    <a href="javascript:void(0);" title="Pop 2">Pop 2</a>
    <a href="javascript:void(0);" title="Pop 3">Pop 3</a>
  </div>

</body>
</html>

弹出焦点示例
var openWin=[];
$(函数(){
$('#elem')。在('click','a',function()上{
var index=$(this.index();
var page='pop'+(索引+1)+'.html';
var w=window.open(第页,$(this.attr('title'),'u blank');
openWin[index]=w;
});
});
现在打开的窗口是窗口1和窗口2。我想从窗口2转移窗口1的焦点。有没有办法做到这一点

pop1.html

<html>
<head>
  <title>Popup 1 Example</title>
  <script type="text/javascript">
    function go() {
        if(window.opener.openWin) {
            var popup2 = window.opener.openWin[1];
            popup2.focus();
        }
    }
  </script>
</head>
<body>
  <div>
    popup 1 example
  </div>
  <div><a href="javascript:void(0);" onclick="go();">Go to Popup2</a></div>
</body>
</html>

弹出窗口1示例
函数go(){
if(window.opener.openWin){
var popup2=window.opener.openWin[1];
popup2.focus();
}
}
弹出窗口1示例
pop2.html

<html>
<head>
  <title>Popup 2 Example</title>
</head>
<body>
  <div>
    popup 2 example
  </div>
</body>
</html>

弹出窗口2示例
弹出窗口2示例

检查fiddle中的main.html代码

如果代码编写正确,请实现下面列出的两个更改

1) 您需要在openWin数组中推送窗口对象

var openWin = [];
  $(function(){
      $('#elem').on('click', 'a', function(){
          var index = $(this).index();
          var page = 'pop'+(index+1)+'.html';
          var w = window.open(page, $(this).attr('title'), '_blank');
          //openWin[index] = w;
          openWin.push(w); //Push the window object

      });
  });
2) 使用数组索引访问窗口对象以聚焦窗口

function go() {
    //console.log(openWin);
    //if(window.opener.openWin) {
      //  var popup2 = window.opener.openWin[1];
        //popup2.focus();
    //}
    //Supposing that pop1, pop2 and pop3 are opened, you want to access pop2
    openWin[1].focus();

}

希望有帮助

您可以使用方法window.open

window.open("",window_name).focus();
假设窗口已打开,则可以使用上述代码将焦点转移到窗口

请在pop2.html中使用以下代码,并尝试[按顺序打开所有窗口后]

<html>
<head>
<title>Popup 2 Example</title>
<script language="javascript">
function openNew()
{
    window.open("","Pop 3").focus();
}
</script>
</head>
<body>
<div>
popup 2 example
</div>
<a href="javascript:void(0);" onclick="javascript:openNew();">
 Go to pop3</a>
</body>
</html>

弹出窗口2示例
函数openNew()
{
window.open(“,”pop3“).focus();
}
弹出窗口2示例
根据您的代码,您正在使用title属性来命名窗口,因此POP3用于将焦点转移到POP3窗口

或者,您可以检查窗口实例是否打开,然后完全加载URL或转移焦点

希望对你有帮助

Make go()函数只需调用打开器窗口中的函数,例如:

window.blur(); //focus out of here
window.opener.myParentWindowFunction( 2 );
该函数(在“父”窗口中)应调用目标窗口中的函数,该函数仅为“window.focus()”

在每个弹出窗口上:

function callFocus(){ window.focus(); }
你不能让一个窗口“发送”焦点到另一个窗口(我猜是安全问题),但你可以让一个窗口“请求”。。。这取决于浏览器是否能够获得它(在chrome中不起作用,但是如果在焦点后添加一个alert(),它将改变窗口。有趣的是,如果你只是放置了警报而不是焦点,它不会交换窗口…)


代码只是一个模型,但这是概念。您必须使用“开启器”窗口作为中继通信,与需要调用焦点的窗口进行通信。希望您不需要交叉浏览。

请按顺序打开所有窗口,然后再试一次!我已经在Firefox中测试过了,我也在chrome上检查过了!我得到的
openWin
未在pop1.html页面上定义关闭所有打开的窗口,刷新页面并通知我!如何在pop1.html页面中获取
openWin
变量。它始终显示未定义。
openWin
在main.html页面中定义。
function callFocus(){ window.focus(); }