Firefox не загружает плагин jQuery при вводе URL

У меня очень неприятная проблема с Firefox 3.6.8. У меня есть этот образец плагина:

    (function($){  

    $.fn.test_plugin = function(settings){  

        $(this).load(function(settings){
            alert('ok');
        });
    };
})(jQuery); 

И внизу html-страницы что-то вроде этого:

        $(function(){
        $("#image1").test_plugin();
    });

Таким образом, в основном это должно отображать предупреждающее сообщение после загрузки страниц, и это происходит, за исключением случаев, когда вы вводите URL-адрес вручную в Firefox. Если я обновляю страницу, нет проблем, но при перенаправлении или ручном вводе URL-адреса это не так. У меня нет ошибок, и от firebug все кажется в порядке. Это происходит только на FF, у меня нет проблем с Safari, Chrome, IE.

Любая идея, почему это?

Благодарность


person Henrique B.    schedule 30.07.2010    source источник


Ответы (3)


См. запись jQuery API для загрузки.

.load(url, [data], [complete(responseText, textStatus, XMLHttpRequest)])

Первый аргумент для загрузки — это URL. За этим могут дополнительно следовать данные и функция обратного вызова. Вы не указали URL-адрес в своем вызове для загрузки.

Похоже, вы пытаетесь написать свой первый плагин jQuery. Если это так, я бы рекомендовал прочитать Шаблон разработки плагинов.

На основе этого я создал Gist, на который вы также можете посмотреть.

person calvinf    schedule 30.07.2010
comment
Отличный ресурс по этой ссылке. Спасибо - person Henrique B.; 30.07.2010
comment
Рейгель прав, я не видел отдельной записи для события загрузки. - person calvinf; 30.07.2010
comment
Также обратите внимание, что если вы пытаетесь запустить событие после загрузки окна, лучшим вариантом будет $(document).ready(). api.jquery.com/ready - person calvinf; 30.07.2010

Мне кажется, что вы, возможно, пытались использовать функцию загрузки jquery в качестве события выгрузки страницы, что неверно. Функция загрузки предназначена для вызова Ajax, который, как указано в calvinf, требует параметра URL среди других параметров для вызова.

Но прочитайте еще немного, и вы уже на пути к написанию плагинов jquery :)

person Ali Habibzadeh    schedule 30.07.2010

Хорошо, спасибо за ваши ответы, однако я, кажется, исправил это.

я только что использовал

$(window).load(function(settings){

вместо

$(this).load(function(settings){

Это устранило проблему, и в других браузерах все работает нормально.

person Henrique B.    schedule 30.07.2010