onclick事件在Safari中不起作用?

时间:2011-04-28 16:28:17

标签: jquery safari cross-browser onclick

无法弄清楚为什么到处都可以使用Safari? 我有这个HTML:

<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阻止了它,防止这种情况的任何解决方案?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

只需删除那个花哨的href="javascript:;"属性即可。 或者将其定义为

 href="javascript:authenticateTwitter();"

并删除onclick。

其中一个但不是两个都很短。

答案 2 :(得分: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>