загрузка jquery дважды вызывает ошибку? - PullRequest
10 голосов
/ 28 апреля 2010

У меня есть страница, на которой загружается jquery + другие js:

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.jeditable.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/corner.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.form.js" type="text/javascript"></script>
<script src="/eiv/javascripts/validationdate.js" type="text/javascript"></script>

Я загружаю вкладки следующим образом:

<%if (tabnum == 1) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 0);
                dateValidation();
                changeOption();
                deleteConfirmation();
        });
        </script>
<%} else if (tabnum==2) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 1);

                   changeOption();
                   deleteConfirmation();
        });
        </script>
<%}%>

validationdate.js - это мина, построенная JS, которая проверяет даты и другие вещи. в первой строке это выглядит так:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');

Проблема: Является ли это в производство в то время .. на этой странице ошибки и дают ошибку JS. Это приводит к тому, что вкладки не кликабельны. Эта ошибка происходит периодически, и я не могу воспроизвести ее на моей машине. Обе машины используют IE. Ошибка также происходит в Firefox, хотя небольшая ошибка JS не появляется в Firefox. и у меня даже есть firebug, который также не показывает никакой ошибки JS.

Я подозреваю, что появляется ошибка, потому что validationdate.js также загружает jquery-1.3.2.min.js. Может ли это быть ошибкой?

Кстати, ошибка JS, которую я получаю, это «Исключение поймано, но не сгенерировано .. строка 23», а строка 23 следует

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>

У меня действительно нет вариантов, и я хочу попробовать кое-что. а также способы воспроизведения на моей машине, чтобы я мог это исправить !!

Ответы [ 3 ]

13 голосов
/ 29 апреля 2010

Сначала ответьте на ваш вопрос, да , включая jQuery дважды, может вызвать всевозможные проблемы.

Чтобы исправить это, строка:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');

Следует обернуть, чтобы проверить, существует ли jQuery, а не включать его вслепую, например:

if (typeof jQuery == 'undefined') {  
  document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
}

Тогда он включит его, только если jQuery еще не на странице. Есть одно предостережение: если вы используете другую (возможно, более новую) версию jQuery, для которой был создан код проверки, есть вероятность, что есть некоторые перерывы.

1 голос
/ 14 августа 2012

Я часами выяснял, почему использование jQuery.noConflict () не работает как есть ...

Просто используйте var j$ = jQuery.noConflict(); и после этого используйте j $ вместо $ каждый раз, когда вы используете Jquery на этой странице.

0 голосов
/ 24 июля 2012

Использование iframe приведет к двойной загрузке JQuery, если вы
1) загрузить JQuery для каждой страницы (то есть в Ruby on Rails через application.html.erb) и
2) iframe также является страницей из вашего приложения, а не iframe внешнего сайта.

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