当用户点击某个链接时,我正在尝试更新Meteor中的集合。该链接将打开一个新选项卡,该选项卡位于外部站点上。但是,我想将此点击存储在我的数据库中。
我尝试过使用e.preventDefault(),但后来无法在新标签页中打开链接。有什么建议吗?
答案 0 :(得分:1)
您可以使用click事件并在插入数据库后使用window.location
。
所以,它看起来像这样:
Template.name.events({
'click a' : function(e) {
e.preventDefault();
// Insert data into database
Table.insert({
// data here
});
// Open new tab
window.open(url, '_blank');
}
});
答案 1 :(得分:1)
您不应该使用javascript打开新标签,因为这会激活弹出窗口拦截器。最好的解决方案是正常连接,并跟踪侧面的链接:
HTML:
<template name="link">
<a href="http://google.com" target="_blank" id="the_link">CLick</a>
</template>
JS:
Template.link.events({
'click a#the_link': function(e,tmpl) {
MyCollection.update({_id: "the_link_id"} , {$inc { "clicks":1 } });
}
});
答案 2 :(得分:0)
您可以在服务器端进行安全插入。可以在响应成功时打开窗口。
在客户端
Template.name.events{(
"click .clickevent":function(e){
e.preventDefault();
Meteor.call("Methodname", datatoinsert,function(err){
if(!err)
window.open(url, '_blank');
})
}
)};
在服务器
中Meteor.methods({
Methodname:function(datatoinsert){
Tablename.insert({
//insert data here
})
}
});
通过这种方式,您可以添加事件,并且在成功插入数据后,您可以打开一个窗口。
我希望它可以帮到你。