событие onclick не работает в Safari? - PullRequest
3 голосов
/ 28 апреля 2011

Не могу понять, почему это работает везде, кроме 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>

** РЕДАКТИРОВАТЬ: БЛОК-ПАКЕТ САФАРИ БЫЛ ПРЕДОТВРАТИТЬ ЕГО, ЛЮБЫЕ РЕШЕНИЯ, ЧТОБЫ ПРЕДОТВРАТИТЬ ЭТО?

Ответы [ 3 ]

1 голос
/ 28 апреля 2011

Исправить ли эти изменения:

<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>
0 голосов
/ 28 апреля 2011

Попробуйте либо

<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>
0 голосов
/ 28 апреля 2011

Просто удалите этот причудливый атрибут href="javascript:;", и он должен работать. Или определите это как

 href="javascript:authenticateTwitter();"

и удалите по клику.

Либо один, но не оба, чтобы быть коротким.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...