2011-03-30 72 views
1

我有一個div,在我的網站上有多個頁面。我不想在新窗口中專門設置每個窗口,而是希望在特定窗格中打開所有鏈接。我如何使用HTML/CSS/JavaScript來做到這一點?使用HTML/CSS/Javascript在新頁面中打開鏈接

謝謝

+0

@Neal,通常我會同意你的看法,但是代碼不會告訴我們任何超過golf_nut口頭描述的東西。這是一個寫得很好的問題。 – jessegavin 2011-03-30 20:31:49

回答

0

您可以使用JavaScript和jQuery。

首先我建議DIV的ID爲outgoing

<div id='outgoing'> 
    <a href='http://google.com'>Go to Google</a><br> 
    <a href='http://stackoverflow.com'>Look at SO!</a> 
</div> 

現在我們可以用簡單的JavaScript來dynamiclaly添加target='blank'到這些鏈接:

$(function() { 
    $('#outgoing a').attr('target', '_blank'); 
}); 

You can check example here

0

你不能使用jQuery通過所有鏈接指定專區內循環,然後將目標設置爲「_blank」。

2

這裏是你如何能做到這一點與jQuery

,如果您有類似<div class="myLinks">...</div>

$('.myLinks a').attr("target", "_blank"); 
+0

這將工作,但謹慎的話。如果有人在DOM完成加載之前點擊鏈接(較慢的連接),它將不會在新窗口中打開。 – Mark 2011-03-30 19:53:14

2

嗯,我想有兩個合理的方法來從在打開HREF一個新窗口。

  • 編輯node並設置其target_blank<a href="foo" target="_blank"></a>
  • 使用JavaScript來捕捉click事件,防止默認行爲,並呼籲window.open()

    var anchors = document.querySelectorAll('#mydiv a'); 
    [].forEach.call(anchors, function(anchor) { 
        anchor.addEventListener('click', function(e) { 
         window.open(e.target.href, 'mywindow', '_blank'); 
    
         e.preventDefault(); 
         e.stopPropagation(); 
        }, false); 
    }); 
    

那示例代碼是vanilla Javascript,它只能在兼容W3C的bro中工作wser(!= IE)。
如果你能負擔得起使用JS框架,生活會更容易,因爲所有這些都會爲你抽象出瀏覽器差異。

+0

+1很好的答案。喜歡你在推薦框架之前先寫Javascript。 – jessegavin 2011-03-30 20:30:41

1

我覺得你有一些頁面的股利和鏈接如下:

<div id="myDiv"> 
    <a href="Link Url">Link Text</a> 
    <!--some other elements--> 
</div> 

你需要創建像波紋管一個js文件,並添加它結束所有網頁的:

var div = document.getElementById("myDiv"); 
if (div) { 
    for (var i = 0; i < div.childNodes.length; i++) 
    { 
     if (div.childNodes[i].nodeName.toLowerCase() == "a") 
      div.childNodes[i].target = "_blank"; 
    } 
} 

你需要做的所有事情!這個代碼速度不夠快,甚至不需要JQuery。

相關問題