【问题标题】:Setting focus to existing browser tab将焦点设置到现有浏览器选项卡
【发布时间】:2017-04-13 01:48:49
【问题描述】:

我已经对这个问题进行了广泛的研究,但仍然无法得到答案。以下代码在 Chrome 中运行良好:

if ($window.localStorage.getItem('adminconsole') == null) {
        $window.localStorage.setItem('adminconsole', 'adminconsole');
        $window.open('admin.html', 'adminconsole');
    }
    else {
        try {
            window.open('', 'adminconsole').focus();
        }
        catch (error) {
            alert(error);
        }
    }

当我在打开 admin.html 后调用此代码时,Chrome 会将焦点切换到它,而不是 IE。知道如何让它在 IE 中运行吗?

谢谢

【问题讨论】:

  • 这与输入字段无关。虽然,我尝试过超时,但对我不起作用。它对你有用吗?
  • 不,我没有测试过它,它似乎可以工作。 :) 我也发现了这个:stackoverflow.com/a/5651750/5142901。也许您应该尝试不同的方法并聚焦您刚刚从该窗口内部打开的窗口
  • 在您的 else 情况下,您是否要关注已打开的现有选项卡?因为现在你正在打开一个新标签。
  • 我想切换到现有标签。该代码在 Chrome 中运行良好。

标签: javascript internet-explorer


【解决方案1】:

所以根据我的发现,您无法在 IE 中聚焦选项卡。但是,您可以做的是打开一个弹出窗口并聚焦它。我已经能够在 Microsoft Edge 上测试它,我目前没有其他浏览器。

ma​​in.html

<script>
        function openPopup() {
            window.open("[path_to_file]/admin.html", null, "height=200, width=200");
        }
</script>
<button onclick="openPopup()">Open popup</button>

admin.html

<script type="text/javascript">
	 function focusMe() {
    	//alert('focusing');
        window.focus();
    }

	(function () {
	    setTimeout(function() {
	    	focusMe();
	    }, 5000);
	})();
</script>

<h1>admin</h1>

我希望这会有所帮助。

【讨论】:

  • 我已经编辑了答案。你试过 window.open("[path_to_file]/admin.html", null);而不是来自 admin.html 的代码尝试以这种方式集中注意力?
  • 假设我做得正确,我得到的只是第一个选项卡顶部的弹出窗口。它不会切换到第二个,尽管创建弹出窗口的代码实际上是在第二个选项卡中执行的。
  • 在我的情况下弹出窗口打开(在新窗口中),如果我将它从焦点移开,它会在 5 秒后聚焦。评论是为了以防万一。
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
相关资源
最近更新 更多