使用javascript在新选项卡中打开链接将停止工作

使用javascript在新选项卡中打开链接将停止工作,javascript,jquery,html,css,tumblr,Javascript,Jquery,Html,Css,Tumblr,我的tumblr博客上有一些代码,可以使“notes”div中的链接在一个新选项卡中打开-它可以正常工作,但一旦我单击“showmorenotes”(加载更多链接),它就会停止处理这些链接。这是我的密码 <script type="text/javascript"> $(function(){ $("#notes a").attr("target","_blank"); }); </script> $(函数(){ $(“注释a”).attr(“目标”,即“空白”

我的tumblr博客上有一些代码,可以使“notes”div中的链接在一个新选项卡中打开-它可以正常工作,但一旦我单击“showmorenotes”(加载更多链接),它就会停止处理这些链接。这是我的密码

<script type="text/javascript">
$(function(){
  $("#notes a").attr("target","_blank");
});
</script> 

$(函数(){
$(“注释a”).attr(“目标”,即“空白”);
});
以下是tumblr对此问题的看法:“注释是用AJAX分页的。如果主题需要操作Notes标记或DOM节点,则可以添加Javascript回调,在加载或插入新的注释页面时触发”

tumblrNotesLoaded(notes\u html)如果定义了此Javascript函数,则在加载新的notes页面并准备插入时将触发此函数。如果此函数返回false,则将阻止插入注释


tumblrNotesInserted()“如果定义了此Javascript函数,则在将新的注释页插入DOM后将触发此函数。”

新加载的链接不会将目标设置为“空白…”。。。加载新链接后,应该执行以下操作

$("#notes a").attr("target","_blank"); 
再一次-由于您没有显示关于加载这些链接的代码,这是我能做的最好的了

编辑:我刚看了你的页面-我想这应该可以

this.style.display = 'none';
document.getElementById('notes_loading_121152690941').style.display = 'block';
if (window.ActiveXObject) var tumblrReq = new ActiveXObject('Microsoft.XMLHTTP');
else if (window.XMLHttpRequest) var tumblrReq = new XMLHttpRequest();
else return false;
tumblrReq.onreadystatechange = function() {
    if (tumblrReq.readyState == 4) {
        var notes_html = tumblrReq.responseText.split('<!-- START ' + 'NOTES -->')[1].split('<!-- END ' + 'NOTES -->')[0];
        if (window.tumblrNotesLoaded)
            if (tumblrNotesLoaded(notes_html) == false) return;
        var more_notes_link = document.getElementById('more_notes_121152690941');
        var notes = more_notes_link.parentNode;
        notes.removeChild(more_notes_link);
        notes.innerHTML += notes_html;
        if (window.tumblrNotesInserted) tumblrNotesInserted(notes_html);
        // ************************************************
        $("#notes a").attr("target","_blank");
        // ************************************************
    }
};
tumblrReq.open('GET', '/notes/121152690941/lhtXynZtK?from_c=1433902641', true);
tumblrReq.send();
return false;
this.style.display='none';
document.getElementById('notes_loading_121152690941')。style.display='block';
if(window.ActiveXObject)var tumblrReq=new-ActiveXObject('Microsoft.XMLHTTP');
else如果(window.XMLHttpRequest)var tumblrReq=new XMLHttpRequest();
否则返回false;
tumblrReq.onreadystatechange=函数(){
if(tumblrReq.readyState==4){
var notes_html=tumblrReq.responseText.split(“”)[1]。split(“”)[0];
如果(window.tumblrNotesLoaded)
if(tumblrNotesLoaded(notes_html)==false)返回;
var more_notes_link=document.getElementById('more_notes_121152690941');
var notes=more\u notes\u link.parentNode;
notes.removeChild(更多notes\u链接);
notes.innerHTML+=notes\u html;
if(window.tumblrNotesInserted)tumblrNotesInserted(notes\u html);
// ************************************************
$(“注释a”).attr(“目标”,即“空白”);
// ************************************************
}
};
tumblrReq.open('GET','/notes/121152690941/lhtXynZtK?from_c=1433902641',true);
tumblrReq.send();
返回false;

添加的行被
/******************************************************

包围,您可以在
mousedown
委托事件上设置
target
属性,例如:

$(function () {
    $('#notes').on('mousedown', 'a:not([target])', function () {
        this.target = "_blank";
    });
});
使用以下命令:

$('ol.notes').on('click', 'a', function (e) {
    if (e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.isDefaultPrevented()) {
        return;
    }
    window.open(this.href);
    e.preventDefault();
});
这将在notes容器上附加一个事件处理程序,确保它只在
a
元素上获得单击,并且单击不是中间单击、alt单击、


一旦所有多余的点击被过滤掉,它就会通过Javascript打开一个新的标签;没有必要设置
target=“\u blank”

您可以添加更多详细信息吗?为什么不在HTML标记中为这些链接设置target属性?@A.Wolff-他没有,因为tumblr没有tUm,如果您发布实际的tumblr模板代码,我很确定这可能是模板内部的一个简单修复,简单地更新便笺标签。用更多信息更新帖子。似乎不起作用,我用这个替换了代码,并且没有在新标签中打开任何链接。可能是因为锚已经有了目标属性,所以尝试用
a
Close替换
a:not([target])
,但是你设置目标太晚了。当处理程序运行时,浏览器已经决定链接将在当前选项卡中打开。我认为代码是由Tumblr插入的,因此无法更改