2016-09-07 69 views
0

我試着讓這段代碼工作,但它不工作,所以我需要你的幫助。 我希望它檢查是否有人登錄到Gmail,如果是,則強制他使用Gmail作爲mailto客戶端,如果沒有,則使用默認的mailto客戶端。 我的以前的版本是在那裏,它的工作或多或少: http://www.pazaak.nazwa.pl/projekty/gmail/index2.html與谷歌API sessionParams混合不工作JavaScript和JQuery

但我被要求重寫它爲jQuery。我創建這樣的東西:

(function() { 
     var po = document.createElement("script"); 
     po.type = "text/javascript"; po.async = true; 
     po.src = "https://apis.google.com/js/client:plusone.js?onload=OnLoadCallback"; 
     var s = document.getElementsByTagName("script")[0]; 
     s.parentNode.insertBefore(po, s); 
})(); 

$(document).ready(function(){ 
var sessionParams = { 
     'client_id': 'myclientID', 
     'session_state': null 
    } 
    $(".mail2").click(function(e){ 
    console.log('test'); 
    gapi.auth.checkSessionState(sessionParams, $(function(stateMatched) { 
    if (stateMatched == true) { 
     console.log('jfgh'); 
     return true; 
     } else { 
     e.preventDefault(); 
     console.log('g'); 
     window.open("https://mail.google.com/mail/u/0/#inbox?compose=new"); 
     return false; 
     } 
    })); 
}); 
}); 

然而,某些東西仍然是錯誤的。我懷疑主要問題是SessionParams無法正常工作。我在網上找到了SessionParams的另一個代碼,但不能發佈它,因爲我需要更多的聲望來放置2個鏈接。正如我上面所說,我需要在jQuery中擁有一些我的代碼。

回答

0

你包裹在$()回調,這是不正確的:

gapi.auth.checkSessionState(sessionParams, function (stateMatched) { 
      if (stateMatched == true) { 
       console.log('jfgh'); 
       return true; 
      } else { 
       e.preventDefault(); 
       console.log('g'); 
       window.open("https://mail.google.com/mail/u/0/#inbox?compose=new"); 
       return false; 
      } 
     }); 
+0

謝謝,它的工作就像一個魅力現在:) – David

+0

很高興能幫助 – DvS