我正在尝试使用mootools ajax请求来记录外发链接的点击次数。到目前为止,我正在做的事情。
每个链接如下所示:
<div id="1">
<a href="http://stackoverflow.com/" onclick="clickRecord(1)">StackOverflow</a>
</div>
javascript函数clickRecord(id)定义如下:
function clickRecord(id){
var u = "record.php";
var req = new Request({
method: 'post',
url: u,
data:{'id':id},
onComplete:function(response){
}
}).send();
}
我遇到的问题是这个。如果我添加一个返回false;到onclick =“”声明,一切正常,当然问题是点击不会将用户带到目标页面。如果我没有返回假;那么似乎ajax调用永远不会被执行。
我认为onclick事件应首先执行,然后才应执行默认操作。情况不是这样吗?
如果您使用onmousedown事件,则会出现更奇怪的情况。好像在Firefox上,如果你使用onmousedown事件,一旦你转到新页面,你只能导航回旧页面,你必须刷新旧页面。否则呼叫不会被执行。这不会发生在IE上。
答案 0 :(得分:2)
不要使用onclick
- 非常1995年。
而是将事件附加到元素并使用event.stop()
,即:
<a href="http://stackoverflow.com/" data-id="1">StackOverflow</a>
JS:
document.getElements('a').addEvents({
click: function(event) {
event.stop();
var u = 'record.php';
var req = new Request({
method: 'post',
url: u,
data: {
'id': this.get('data-id');
},
onComplete: function(response) {}
}).send();
}
});
顺便说一下。 <div id="1">
这在HTML中无效,ID需要以字母开头。
答案 1 :(得分:0)
行。找到其中一个问题的答案:
function clickRecord(id){ var u = "record.php"; var req = new Request({ async:false, method: 'post', url: u, data:{'id':id}, onComplete:function(response){ } }).send(); }
onmousedownevent上提到的第二个问题,即如果浏览器导航回来,firefox没有执行ajax调用仍未解决。但是我要离开那是因为这不是提出的主要问题。