Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html在新目标和焦点上打开url_Javascript_Html - Fatal编程技术网

Javascript html在新目标和焦点上打开url

Javascript html在新目标和焦点上打开url,javascript,html,Javascript,Html,我正在尝试修复一个网站 它通过在新窗口/选项卡中打开帮助页 它不起作用 我认为此功能是特定于浏览器的,您无法定义聚焦新选项卡或窗口的行为。您可以使用以下代码: var _arrAllWindows = new Array(); function OpenOrFocus(oLink, sTarget) { var oWindow = _arrAllWindows[sTarget]; if (!oWindow || oWindow.closed) { oWindow

我正在尝试修复一个网站

它通过
在新窗口/选项卡中打开帮助页

它不起作用

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

您可以使用以下代码:

var _arrAllWindows = new Array();
function OpenOrFocus(oLink, sTarget) {
    var oWindow = _arrAllWindows[sTarget];
    if (!oWindow || oWindow.closed) {
        oWindow = window.open(oLink.href, sTarget);
        _arrAllWindows[sTarget] = oWindow;
    }
    oWindow.focus();
    return false;
}
那么要调用它,就要有这样的链接:

<a href="http://www.google.com" onclick="return OpenOrFocus(this, 'help');">Open</a>

在Chrome和IE中运行良好,不幸的是Firefox默认禁用了在代码中“提升”窗口的选项,因此
focus()
在该浏览器中没有效果-找不到任何解决方法


测试用例在这里可用:

现代浏览器似乎不允许您使用
窗口。请关注现有窗口。或者至少,它不会提供窗口焦点。(IE9实际上会使选项卡闪烁,但大多数其他浏览器只是加载它,但没有显示用户的注意力应该被吸引到新窗口。)

因此,一种解决方案是先关闭窗口,然后立即重新打开。例如:

现在,您可以编写如下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 />


因为它首先关闭窗口,所以它可靠地将焦点提供给新创建的子窗口

此解决方案还使用
window.popups
名称空间,因此,如果您有一个名为
popups
的函数,或者与之冲突,请在javascript示例中重命名该名称空间的用法

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

测试地点:Firefox 4、Chrome 11、IE 9

jsiddle演示:

这里有一种方法可以使用jQuery和HTML5,并为禁用JavaScript的客户端提供回退。它将在每次单击时重新加载页面。在Firefox和Chrome中测试并运行

<script>
    $(document).ready(function() {
        $('a[data-popup]').click(function(event) {
            event.preventDefault();
            window.open(this.href, this.dataset['popup'], 'resizable,scrollbars').focus();
        });
    });
</script>

<a href="https://stackoverflow.com/" target="_blank" data-popup="stackoverflow">Stack Overflow</a>
<a href="https://superuser.com/" target="_blank" data-popup="superuser">Super User</a>
<a href="https://serverfault.com/" target="_blank" data-popup="serverfault">Server Fault</a>

$(文档).ready(函数(){
$('a[data popup]')。单击(函数(事件){
event.preventDefault();
window.open(this.href,this.dataset['popup'],'resizeable,scrollbars').focus();
});
});

所以窗口正在加载,只是没有显示?是否加载了正确的页面?它在每个浏览器中都有相同的行为吗?我认为这是一个窗口管理器的问题,不是javascript可以做的事情,但我现在是主角,我想跟进。@richard:什么浏览器?它是否也发生在JSFIDLE示例中?中的示例适用于chome,而不是上面提到的firefox。回到工作岗位后,将与ie一起重新测试。
<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 />
<script>
    $(document).ready(function() {
        $('a[data-popup]').click(function(event) {
            event.preventDefault();
            window.open(this.href, this.dataset['popup'], 'resizable,scrollbars').focus();
        });
    });
</script>

<a href="https://stackoverflow.com/" target="_blank" data-popup="stackoverflow">Stack Overflow</a>
<a href="https://superuser.com/" target="_blank" data-popup="superuser">Super User</a>
<a href="https://serverfault.com/" target="_blank" data-popup="serverfault">Server Fault</a>