Member 13014674 Ответов: 2

Это конфликт кода?


Мастер-скрипт, установленный на моем сайте, содержит:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"/>
    
<script src="https://apis.google.com/js/plusone.js" type="text/javascript">
    {lang: "en-US"}
    </scr ipt>

(РЕДАКТИРОВАТЬ: Я разделил тег закрывающего скрипта, так как он, похоже, вызвал ошибку на сайте.)

Когда я пытаюсь добавить еще один элемент со следующим скриптом, он отказывается показывать какой-либо ответ -
<script type="text/javascript" src="http://project.dimpost.com/flexslider-carousel/jquery.js"></script>

    <script type="text/javascript" src="http://project.dimpost.com/flexslider-carousel/jquery.flexslider-min.js"></script>

    <script type="text/javascript">
    $(document).ready(function() {
        $(window).load(function() {
            $('.flexslider').flexslider({
               
            });
        });
    });
    </script>

В чем может быть проблема и как ее решить?

Что я уже пробовал:

Добавлен $.noConflict() вот так и пробовали:
<script type="text/javascript">
$.noConflict();
$(document).ready(function() {
    $(window).load(function() {
        $('.flexslider').flexslider({
            
        });
    });
});
</script>




РЕДАКТИРОВАТЬ: Добавлено из решения 1:

Но этот код работает без каких-либо проблем на платформе без какого-либо уже запущенного скрипта jquery. Если он уже есть, возникают конфликтные вопросы. Консоль java показывает следующие две ошибки:

1. TypeError: $ не является функцией

2.Использование getPreventDefault() является устаревшим. Вместо этого используйте defaultPrevented.

Как поступить с этими двумя ошибками?

ZurdoDev

Являются ли 2 jquery одной и той же версией?

Richard Deeming

Извините за все правки - ваш вопрос спровоцировал непонятную ошибку на сайте:
Странный дисплей в QA[^]

Надеюсь, один из администраторов сайта сможет привести в порядок историю изменений, как только ошибка будет исправлена. :)

Richard Deeming

Две очевидные проблемы из вашего первого кодового блока:

1) теги скриптов не могут быть самозакрывающимися. Вам нужен полный закрывающий тег: </script> вместо.

2) Теги скриптов, которые имеют src набор атрибутов не должен содержать никакого содержимого. То {lang: "en-US"} контент будет либо проигнорирован, либо вызовет ошибку, в зависимости от браузера.

Member 13014674

Спасибо, Ричард. Пожалуйста, смотрите мой ответ ниже. (на самом деле это запрос!)

Richard Deeming

Если вы хотите обновить свой вопрос, нажмите на ссылку "улучшить вопрос" в нижней части вопроса. Не публикуйте обновление как "решение".

Я добавил содержание к вашему вопросу.

Bryian Tan

1. TypeError: $ не является функцией- & gt; убедитесь, что библиотека jQuery загружена первой перед другими JavaScript

2 Ответов

Рейтинг:
2

Member 13014674

Я мигрировал с https на http и использовал

(function($){

    // jQuery code is in here

})(jQuery);


Это мне помогло!


Richard Deeming

Если вы размещаете свою страницу на сайте HTTPS (почему вы не упомянули об этом в своем вопросе?), то большинство браузеров заблокируют страницу от загрузки выполненных элементов (например: Javascript) с HTTP-сайта.

У вас есть две ссылки на Скрипты, размещенные на project.dimpost.com, который является сайтом только для HTTP. Если этот сайт не добавляет SSL-сертификат, ваши единственные варианты-переключить свой собственный сайт на HTTP или скопировать файлы Javascript с этого сайта на свой собственный сайт.

Но понижение вашего собственного сайта до HTTP-это не очень хорошая вещь. Chrome, в частности, начинает ограничивать доступ к определенным API, чтобы они были доступны только с сайтов HTTPS.

Если ваше лицензионное соглашение позволяет это, я бы предпочел скопировать файлы на ваш собственный сайт. Если вы не можете этого сделать, то начинайте приставать к администраторам по адресу project.dimpost.com чтобы получить SSL-сертификат. Это даже не должно стоить им денег - Давайте зашифруем[^] выдаст им сертификат бесплатно.

Рейтинг:
1

Kornfeld Eliyahu Peter

Вы загружаете jQuery дважды! А чего вы ожидали?
Если это не обязательно, то избегайте его!!!

Если вам не повезло и вы должны использовать две версии, вы должны использовать noConflict, но должны использовать его правильно...
На Хозяина:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"></script>
<script>
var jQ1_12_4 = $.noConflict(true);
</script>

на хосте:
<script type="text/javascript" src="http://project.dimpost.com/flexslider-carousel/jquery.js"></script>
<script>
var jQ1_8_3 = $.noConflict(true);
</script>

Теперь, когда вы хотите использовать любой из них, вы должны сделать это:
jQ1_12_4(document).ready(function() {
// your code
});

// or

jQ1_8_3(document).ready(function() {
// your code
});