我有一个链接,在左键单击时调用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"> Casos de estudio </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
答案 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"> Casos de estudio </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) {