2011-04-28 75 views
3

無法弄清楚爲什麼這個工作在任何地方,但Safari? 我有這樣的HTML:onclick事件不適用於Safari?

<a href="javascript:;" class="tweet-btn" onclick="authenticateTwitter();"> 
<img src="img/sign-in-with-twitter.png" alt=""> 
</a> 

和這個JS:

<script type="text/javascript"> 
    var socialMediaServiceUrl = 
     // Staging 
     "http://gameconnect.svc"; 

    var sessionFormat = "(S($))/"; 
    var sessionId; 

    function format(s, value) { 
     return s.replace("$", value); 
    } 

    function authenticateTwitter() { 
     authenticate("Twitter"); 
    } 

    function authenticateFaceBook() { 
     authenticate("FaceBook"); 
    } 

    function authenticate(applicationName) { 
     $.ajax({ 
     url: format(socialMediaServiceUrl, "") + "/Authenticate?appName=" + applicationName, 
     dataType: "jsonp", 
     success: function (response) { 
      sessionId = response.SessionId; 
      window.open(response.Url); 
     } 
     }); 
    } 
</script> 

**編輯:Safari的POP-UP塊阻止它,任何解決方案爲了防止這種情況?

+0

嘗試環繞用你的函數$(document).ready(function(){// ...});並檢查螢火蟲控制檯,當你點擊該鏈接 – Cristian 2011-04-28 16:30:54

+0

這沒有工作... – Xtian 2011-04-28 16:35:14

+1

哇,想通了。這是Safari的彈出窗口阻止程序,它阻止了它。但Safari沒有給出警告,或者表明Pop-Block阻止了某些事情。圍繞這一切的任何好的解決 – Xtian 2011-04-28 16:59:11

回答

0

只要刪除那個花式href="javascript:;"屬性,它應該工作。 或將其定義爲

href="javascript:authenticateTwitter();" 

並刪除onclick。

兩者中的任何一個都不夠短。

0

儘量要麼

<a href="#" class="tweet-btn" onclick="authenticateTwitter();"> 
<img src="img/sign-in-with-twitter.png" alt=""> 
</a> 

<a href="javascript:authenticateTwitter();" class="tweet-btn"> 
<img src="img/sign-in-with-twitter.png" alt=""> 
</a> 
1

難道這些變化修正:

<a href="#" class="tweet-btn" onclick="authenticateTwitter(); return false;"> 
<img src="img/sign-in-with-twitter.png" alt=""> 
</a> 

<script type="text/javascript"> 
    var socialMediaServiceUrl = "http://gameconnect.svc"; // Staging 
    /* IMPLICIT SEMICOLON INSERTION? */ 

    var sessionFormat = "(S($))/"; 
    var sessionId; 

    function format(s, value) { 
     return s.replace("$", value); 
    } 

    function authenticateTwitter() { 
     authenticate("Twitter"); 
    } 

    function authenticateFaceBook() { 
     authenticate("FaceBook"); 
    } 

    function authenticate(applicationName) { 
     $.ajax({ 
     url: format(socialMediaServiceUrl, "") + "/Authenticate?appName=" + applicationName, 
     dataType: "jsonp", 
     success: function (response) { 
      sessionId = response.SessionId; 
      window.open(response.Url); 
     } 
     }); 
    } 
</script> 
相關問題