href链接用左键调用ajax并在带有中键的新选项卡中打开 - 不在FF中工作

时间:2014-08-26 06:30:28

标签: javascript ajax firefox

我有一个链接,在左键单击时调用ajax,但在ctrl +单击或中键单击时会在新选项卡中打开。

我从这里复制了代码,Ajax link which can also be opened in new tab? (like Facebook)

但它不能在我的Firefox中运行。问题是它永远不会触发ajax调用,而是始终打开链接。

这是html代码:

<a href="http://forma.culturadigital.cc/es/casos" onclick="javascript:unhide('casos', 'nil', 'nil');javascript:activate('menucasos');javascript:return makeGetRequest(event,'http://forma.culturadigital.cc/pages/casos.php');" class="menu_link"><span id="menucasos" class="nonactive">&nbsp;Casos de estudio&nbsp;</span></a>

这是ajax代码:

function makeGetRequest(e, key) {
if (!e) e = window.event;

if (!e.ctrlKey && !e.button == 1) { //this is to be able to open links by clicking the wheel button or ctrl+click
    http.open('GET', key, true);
    //assign a handler for the response
    http.onreadystatechange = processResponse;
    //actually send the request to the server
    http.send(null);

    return false; //this is important, otherwise the href link will trigger and not the onclick 
    }
}

它在Chrome和IE中运行良好。但不是在FF。实际网站为FORMA

1 个答案:

答案 0 :(得分:1)

删除javascript:中的onclick部分。

<a href="http://forma.culturadigital.cc/es/casos" onclick="unhide('casos', 'nil', 'nil');activate('menucasos');return makeGetRequest(event,'http://forma.culturadigital.cc/pages/casos.php');" class="menu_link"><span id="menucasos" class="nonactive">&nbsp;Casos de estudio&nbsp;</span></a>

javascript:的前缀适用于链接中的href属性,onclick处理程序中应放置普通的javascript。

除此之外,activate函数中的js中存在错误。

它始于:

function activate(fieldID){
    var e = window.event;

    if (!e.ctrlKey && !e.button == 1) {

window.event为firefox返回undefined。更改它以将事件作为参数传递,就像在makeGetRequest

中一样
activate(event,'menucasos');

function activate(e, fieldID){
    if (!e.ctrlKey && !e.button == 1) {