动态更改_target ="空白"到_target =" self"使用JavaScript

时间:2014-05-09 13:59:17

标签: javascript html html5 dom

我有一个包含相当多链接的页面,目前的链接是目标="空白"因此,如果有人不小心点击了一个,他们就会破坏他们在我的页面上所做的事情。但是,我不喜欢做_target ="空白" (我一直认为,用户可以告诉他们如何打开链接......)。

所以我想我可以让用户选择在新窗口/标签页中打开'关闭。目前我在PHP中这样做:

<?php if($newWindow){ echo '_blank'; } ?>

但是如果可能的话,我宁愿在JavaScript中这样做(看起来很难重新加载整个页面只是为了改变一些字符串)。我该怎么办?我发现很多关于更改输入字段等的内容,但没有找到链接属性..

哦,如果可能的话,不在jQuery中。如果可以使用很酷的CSS,但我认为它还没那么远......

2 个答案:

答案 0 :(得分:1)

您网页上的某个位置(应为true / false):

var newWindow = <?=$newWindow;?>

然后做(jQuery,只是概念):

$('a').bind('click', function(event){
    if(newWindow){
        event.preventDefault();
        window.open($(this).attr('href'));
    }
});

有几种方法可以做到这一点,但首先想到的是这个。这显然要求您也处理相关链接 - 所以请记住这一点。

编辑:由于@durbnpoisn给了我greif,这里有代码准备好你放入你的网站:

链接:

<a id="toggle-new-tab">Turn on/off new window</a>

JS:

var newWindow = false;
document.getElementById('toggle-new-tab').onclick = function(){
    newWindow = !newWindow;
}

var links = document.getElementsByTagName('a');
for(var i = 0; i < links.length; i++){
    if(links[i].href !== '')
        links[i].onclick = newWindowHandler;
}

function newWindowHandler(event){
    if(newWindow){
        event.preventDefault();
        window.open(event.target.href);
    }
}

演示:http://jsfiddle.net/qY7sh/1/

答案 1 :(得分:0)

尝试:

document.getElementById("[anchor id]").target = "_blank";

这应该有效,假设你的“a href”有一个ID。