簡體   English   中英

html打開新目標和焦點的網址

[英]html open a url on new target and focus

我正在嘗試修復一個網站。

它通過<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>

那沒起效!

現代瀏覽器似乎不允許你對現有窗口進行窗口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);
}

現在,您可以編寫如下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
JsFiddle演示: http //jsfiddle.net/aqxBy/7/

我認為此功能是特定於瀏覽器的,您無法定義聚焦新選項卡或窗口的行為。

你可以改為使用這樣的代碼:

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()在該瀏覽器中無效 - 無法找到任何解決方法。

測試用例可在此處獲取: http//jsfiddle.net/yahavbr/eVxJX/

這是使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM