如何使用javascript将焦点返回到父窗口?

use*_*329 10 javascript

这不能将焦点返回到Firefox 4和5中的父窗口

<html>
<head>
<script type="text/javascript">
  function openWin()
  {
     myWindow=window.open('','','width=200,height=100');
     myWindow.document.write("<p>The new window.</p>");
     myWindow.blur();
     window.focus();
  }
</script>
</head>
<body>

  <input type="button" value="Open window" onclick="openWin()" />

</body>
</html> 
Run Code Online (Sandbox Code Playgroud)

如何使用javascript将焦点返回到父窗口?

小智 14

您需要为父窗口命名.

Parent.html

<a id="link" href="#">Click to child.html </a>
<script type="text/javascript">
    $(document).ready(function () {
        window.name = "parent";
        $('#link').click(function (event){ 
            event.preventDefault();
            window.open("child.html");
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

Child.html

<a id="link" href="#">Return to Parent </a>
<script type="text/javascript">
    $(document).ready(function () {
        $('#link').click(function(event) {
            event.preventDefault();
            var goBack = window.open('', 'parent');
            goBack.focus();
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

现在,每当您单击child.html中的链接时,父窗口将被聚焦.

  • 只是保持诚实.这不是JavaScript,那是jQuery.提问者可能没有使用它. (3认同)
  • 父窗口名称存储在`window.opener.name` 中,因此可以重写goBack 变量以使用它(即`var goBack = window.open('', window.opener.name)`)。这里有关于 [window.opener](http://www.w3schools.com/jsref/prop_win_opener.asp) 属性的更多信息。 (3认同)

小智 5

很抱歉对一个非常古老的问题进行了死机处理,但我遇到了同样的问题并且找不到任何解决方案。我最终通过使用以下脚本解决了这个问题:

e = window;
while (e.frameElement !== null) {e = e.parent;}
e.parent.focus();
Run Code Online (Sandbox Code Playgroud)

显然,仅仅打电话window.focus();是不够的。您必须使用 Window 的父级的 focus 方法调用window.parent.focus();您无法从 JS 访问任何其他属性,但它会产生跨源错误。如果您的脚本是从页面内的框架触发的,则此脚本也将起作用,假设框架和主页共享相同的源(域)。


Ada*_*son 2

我认为您不能在不关闭子窗口的情况下返回焦点:

myWindow.close()
Run Code Online (Sandbox Code Playgroud)