我想在用戶點擊某個鏈接時更新流星中的集合。該鏈接打開了一個新標籤,該標籤位於外部網站上。不過,我想將此點擊存儲在我的數據庫中。在用戶點擊流星時將事件添加到數據庫中
我已經嘗試使用e.preventDefault(),但是然後我無法獲得在新選項卡中打開的鏈接。有什麼建議麼?
我想在用戶點擊某個鏈接時更新流星中的集合。該鏈接打開了一個新標籤,該標籤位於外部網站上。不過,我想將此點擊存儲在我的數據庫中。在用戶點擊流星時將事件添加到數據庫中
我已經嘗試使用e.preventDefault(),但是然後我無法獲得在新選項卡中打開的鏈接。有什麼建議麼?
在插入數據庫後,您可以使用單擊事件並使用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');
}
});
你可以在服務器端是安全的插入。窗口可以在響應成功時打開。
在客戶端
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
})
}
});
通過這種方式,您可以添加事件,並在成功插入數據,你可以打開一個窗口。
我希望它能幫助你。
你不應該使用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 } });
}
});
這個工作,但window.open結果鉻彈出攔截器來了。任何方式來解決這個問題? –
,它也不適用於Safari。我讀到另一個問題,window.open不能很好地跨瀏覽器。有什麼辦法可以在用戶離開頁面後進行數據插入,就像某種同時進行的後臺工作一樣。 –