2017-08-17 71 views
1

我自定义wordpress插件http://shiftcontroller.com的行为。该插件使用AJAX进行“创建新班次”流程。Javascript - 禁用ajax /强制新窗口。 (WordPress)

我已经添加了配置文件链接到使用javascript的预先存在的职员列表,但我的链接试图进行AJAX调用而不是在新选项卡中打开。

这是我到目前为止有:

 var StaffInputs = document.querySelectorAll('.hc-sm-col.hc-sm-col-6 ul li input'); 
    console.log(StaffInputs); 

    for (i = 0; i < StaffInputs.length; ++i) { 
    console.log(StaffInputs[i].defaultValue); 
    // var staffLink = document.createElement("a", { class: "staff-profile-link", href: "http://mydomainhere.co.uk/user/"+StaffInputs[i].defaultValue }); 
    var staffLink = document.createElement("a"); 
    staffLink.setAttribute("class", "staff-profile-link"); 
    staffLink.setAttribute("href", "http://mydomainhere.co.uk/?author="+StaffInputs[i].defaultValue); 
    staffLink.setAttribute("target", "_blank"); 
    staffLink.setAttribute("rel", "external"); 
    staffLink.setAttribute("data-ajax", "false"); 
    staffLink.innerHTML = ' <i class="icomoon icomoon-notification"></i>'; 
    StaffInputs[i].nextSibling.appendChild(staffLink); 
    } 

然而,出于某种原因,我的链接仍然不会在新窗口中打开。有没有什么办法可以通过Javascript强制执行?

感谢

+0

我不知道如何Ajax请求被做成插件代码是广泛的,很难理解的我的水平。你的意思是这样的:href =“javascript:my_function();” ? – Craig

+0

哇。这工作。你能直接回答这个问题吗?我会选择你的答案。谢谢 :) – Craig

回答

1

您可以在a标签直接添加处理程序,并将它停止传播。 (假设AJAX请求是由使用代表团了DOM树的处理程序作出。)

staffLink.addEventListener('click', function(e) { 
    e.stopPropagation(); 
});