jquery noConflict не работает только в IE8 - PullRequest
7 голосов
/ 14 мая 2010

У меня есть веб-сайт, использующий каркас прототипа, и я собираюсь использовать плагин jquery. Все работает, только не в IE8. Это работает в ie7, который поражает меня. Есть идеи, что может быть не так?

IE8 дает мне объект не поддерживает это свойство или метод, где line jQuery.noConflict (); есть

<script src="/my/docs/jquery.js" type="text/javascript"></script>
<script src="/my/docs/jquery.simplyscroll.js" type="text/javascript"> </script>
<script type="text/javascript">
jQuery.noConflict();
function OpenUp(sURL){
  window.open(sURL,null,'height=560,width=820,status=yes,toolbar=yes,menubar=yes,location=yes,resizable=yes,scrollbars=yes',false); 
}
jQuery(document).ready(function($) {
 $("head").append("<link>");
 css = $("head").children(":last");

 css.attr({
   rel:  "stylesheet",
   type: "text/css",
   href: "/my/docs/jquery.simplyscroll.css"
     });

     $("#scroller").simplyScroll({
       autoMode: 'loop',
       framerate: 1,
       speed: 1
     });
});
</script>

Мне тоже надоело следующее: var $j = jQuery.noConflict(); var j = jQuery.noConflict();

все работает только в IE8.

Ответы [ 8 ]

6 голосов
/ 01 декабря 2010

Я столкнулся с этим также, используя jQuery-1.4.4.js. Все отлично работает, кроме IE8. IE8 не распознает jQuery () ничего. Я смог решить эту проблему, загрузив jQuery и запустив $ .noconflict () до загрузки Prototype, и все это отлично работает во всех моих тестовых браузерах, включая IE8. Эта последовательность противоречит документации по jQuery, и поэтому я нервничаю по этому поводу. На сайте jQuery ничего не могу найти по этому поводу.

t22harris

2 голосов
/ 25 апреля 2012

У меня была похожая проблема. Решение, которое я сейчас использую, - это сохранить переменную $ во временной переменной, загрузить jquery (я загружаю jquery из js-кода), запустить зависимый от jquery код (с jQuery.noConflict), вернуть обратно переменную $.

Это грязно, но, похоже, мне это удалось.

Моя функция, которая добавляет jquery (при необходимости):

function getJQueryAndGo(callback) {
    var thisPageUsingOtherJSLibrary = false;
    var tempDollar = $;
    // Only do anything if jQuery isn't defined
    if (typeof jQuery == 'undefined') {
        if (typeof $ == 'function') {
            thisPageUsingOtherJSLibrary = true;
        }
        loadToHead('script','http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js', function() {
            if (typeof jQuery=='undefined') {
                    //alert('Super failsafe - still somehow failed...')
            } else {
                jQuery.noConflict();
                (function($) {
                    callback($);
                })(jQuery);

            }
        });
    } 
    else 
    { // jQuery was already loaded
        jQuery.noConflict(); // This may not be necessary
        (function($) {
            callback($);
        })(jQuery);
    }

    $ = tempDollar;
}

loadToHead просто загружает скрипт в тег head и запускает функцию обратного вызова при загрузке скрипта.

Большую часть этого кода я нашел в сети и отредактировал. К сожалению, я не помню, где дать кредит на данный момент.

2 голосов
/ 14 марта 2011

Единственный способ, которым я смог это исправить, для IE8 (который был единственным с этой проблемой) и других браузеров, это поместить jQuery и вызов noConflict () в заголовок сразу после инициализации другая библиотека. Вот так:

<script type="text/javascript" src="/path/to/prototype.js"></script>

<script type="text/javascript" src="/path/to/jquery.js"></script>

<script type="text/javascript">var $j = jQuery.noConflict(); </script>

... за которыми следуют любые другие скрипты, использующие jQuery или Prototype.

1 голос
/ 04 октября 2013

Просто была такая же проблема. IE 8 не любит:

var jQuery = jQuery.noConflict();

изменил его на:

var jq = jQuery.noConflict();

работал нормально.

1 голос
/ 14 мая 2010

В прошлом у меня была проблема симуляции, и я обошел ее, используя метатег emulate ie7

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Хотя я не уверен, что это лучшая работа.

0 голосов
/ 31 декабря 2010

У меня точно такая же ошибка при загрузке jquery после 1.4.4 и 1.4.3 после прототипа и только в IE8, даже в Ie7 или Ie6 Jquery 1.4 решил это за меня.

0 голосов
/ 03 августа 2010

Это проблема, которую я тоже обнаружил. Я исправил это, чтобы обновить jQuery до версии 1.4. Версия 1.3.2 терпит неудачу с более новым прототипом на IE8. Извините, этот ответ опоздал.

0 голосов
/ 14 мая 2010

В прошлом у меня были странные проблемы с IE8 на машинах с несколькими версиями IE. В моем случае появлялась ошибка, когда я пытался открыть ссылку в новом окне через javascript. Тот же код отлично работал на IE6 и 7, и машина с only IE8 также работала нормально.

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