Код Javascript и Jquery не загружается в Safari 9 или ниже - PullRequest
0 голосов
/ 07 мая 2018

Ребята, это сводит меня с ума. Я не знаю почему, но мои скрипты JS и Jquery не загружаются в Safari 9, Safari 8 и ниже. Я не очень понимаю, почему.

Я тестирую свой кодовый плагин во всех браузерах, но у меня продолжает возникать эта проблема.

Вот мой код JS / Jquery:

// Gradient buttons news    

    $('.news-btn-div').click(function(){
        var tab_id = $(this).attr('data-tab');
        $('.news-btn-div').removeClass('current');
        $(this).addClass('current');
    })


// News

function req1() {
  fetch('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => response.json())
    .then(json => {
      var title = json.title;
      var body = json.body; 
      document.getElementById("newsTitle").innerHTML = title;
      document.getElementById("newsContent").innerHTML = body;
      document.getElementById("newsContent2").innerHTML = body;
    });
}
req1();

function req2() {
  fetch('https://jsonplaceholder.typicode.com/posts/2')
    .then(response => response.json())
    .then(json => {
      var title = json.title;
      var body = json.body; 
      document.getElementById("newsTitle").innerHTML = title;
      document.getElementById("newsContent").innerHTML = body;
      document.getElementById("newsContent2").innerHTML = body;
    });
}

function req3() {
  fetch('https://jsonplaceholder.typicode.com/posts/3')
    .then(response => response.json())
    .then(json => {
      var title = json.title;
      var body = json.body; 
      document.getElementById("newsTitle").innerHTML = title;
      document.getElementById("newsContent").innerHTML = body;
      document.getElementById("newsContent2").innerHTML = body;
    });
}

function req4() {
  fetch('https://jsonplaceholder.typicode.com/posts/4')
    .then(response => response.json())
    .then(json => {
      var title = json.title;
      var body = json.body; 
      document.getElementById("newsTitle").innerHTML = title;
      document.getElementById("newsContent").innerHTML = body;
      document.getElementById("newsContent2").innerHTML = body;
    });
}

function req5() {
  fetch('https://jsonplaceholder.typicode.com/posts/5')
    .then(response => response.json())
    .then(json => {
      var title = json.title;
      var body = json.body; 
      document.getElementById("newsTitle").innerHTML = title;
      document.getElementById("newsContent").innerHTML = body;
      document.getElementById("newsContent2").innerHTML = body;
    });
}



// Subrscription confirmation without Ajax

$('#newsletter-cf').submit(function () {
  var email = document.getElementById("contact-email").value;
  if(email)
  {

    $("#newsletter-cf").slideUp("slow");
    $("#message-sent").slideDown("slow");

  }

  return false;
});

Это то, что я добавил в голову, чтобы использовать Jquery:

https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js

Я не знаю, что проверять на этом этапе

Это ошибка, которую я получаю в Consolle (Safari 9)

enter image description here

Какой-нибудь ценный совет?


Ошибка для части JS, по-видимому, связана с этим фрагментом кода:

.then(response => response.json())
.then(json => {

Как я читаю в этом вопросе:

JavaScript Safari - SyntaxError: неожиданный токен '>'

Мне не следует использовать => в старом браузере, я не представляю, как можно изменить его, чтобы он работал и на старых браузерах?

1 Ответ

0 голосов
/ 07 мая 2018

Теперь, когда вы добавили в свой пост дополнительную информацию, проблема стала намного понятнее.

в следующем коде вы используете функции стрелок =>

.then(response => response.json())

Они поддерживаются в safari начиная с версии 10. Это не может работать в версии 9. Вы должны переписать их как классические функции:

.then(function(response){
    return response.json(); 
});

Обратите внимание, что особенность функций со стрелками заключается в сохранении значения this, поэтому реальный эквивалент будет:

var self = this;
.then(function(response){
    //use self instead of this inside
    return response.json();
});

После устранения этих ошибок вы можете узнать, работает ли jQuery или нет (и знать, нужно ли вам определять версию Safari, чтобы загружать другую версию jQuery).

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