html打开新目标和焦点的网址

ctr*_*lor 11 html javascript

我正在尝试修复一个网站.

它会在新窗口/选项卡中打开帮助页面<a href="..." target="help">(没有其他框架具有此名称)

这在第一次打开新窗口/选项卡时很有效,可以获得帮助.但在随后的点击中,窗口/选项卡已加载但仍保持隐藏状态.

我试过这个:

<script>
    function OpenAndFocusHelp() {
        win=window.open('help/1000CH00017.htm','help');
        win.focus();
    }      
</script>

<a href="help.html" target="help" 
   onclick="OpenAndFocusHelp()">Help</a>
Run Code Online (Sandbox Code Playgroud)

那没起效!

Kir*_*oll 7

现代浏览器似乎不允许您window.focus使用现有窗口.或者至少,它不会给那个窗口焦点.(IE9实际上会使选项卡闪烁,但大多数其他浏览器只是加载它,但没有表明应该将用户的注意力吸引到新窗口.)

因此,一种解决方案就是首先关闭窗口,然后立即重新打开窗口.例如,声明以下函数:

window.openOrFocus = function(url, name) {
    if (!window.popups)
        window.popups = {};
    if (window.popups[name])
        window.popups[name].close();
    window.popups[name] = window.open(url, name);
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以编写如下HTML:

<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/k3t6x/2/', 'window1')">Window 1</a><br />
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/KR6w3/1/', 'window2')">Window 2</a><br />
Run Code Online (Sandbox Code Playgroud)

由于它首先关闭窗口,因此它可靠地为新创建的子窗口提供焦点.

此解决方案还使用window.popups命名空间,因此如果您有一个名为popups或已与其发生冲突的函数,则重命名javascript示例中的用法.

警告:这在回发后不起作用.这是因为一旦您离开当前页面,它就不再是子窗口的所有者.因此,它不能再关闭它们.但是,它只会降低到使用target属性的通常(非聚焦)行为.

测试: Firefox 4,Chrome 11,IE 9
JsFiddle演示: http ://jsfiddle.net/aqxBy/7/


bev*_*qua 5

我认为此功能是特定于浏览器的,您无法定义聚焦新选项卡或窗口的行为。