2015-01-07 48 views
0

我想在用戶點擊某個鏈接時更新流星中的集合。該鏈接打開了一個新標籤,該標籤位於外部網站上。不過,我想將此點擊存儲在我的數據庫中。在用戶點擊流星時將事件添加到數據庫中

我已經嘗試使用e.preventDefault(),但是然後我無法獲得在新選項卡中打開的鏈接。有什麼建議麼?

回答

1

在插入數據庫後,您可以使用單擊事件並使用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'); 
    } 
}); 
+0

這個工作,但window.open結果鉻彈出攔截器來了。任何方式來解決這個問題? –

+0

,它也不適用於Safari。我讀到另一個問題,window.open不能很好地跨瀏覽器。有什麼辦法可以在用戶離開頁面後進行數據插入,就像某種同時進行的後臺工作一樣。 –

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 
    })  
    } 
}); 

通過這種方式,您可以添加事件,並在成功插入數據,你可以打開一個窗口。

我希望它能幫助你。

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 } }); 
    } 
}); 
相關問題