[英]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.