рассекает mootools - PullRequest
       23

рассекает mootools

0 голосов
/ 29 июля 2011

У меня была проблема, и для ее решения требовалась встроенная функциональность mootools.таким образом я начал анализировать это.есть функция, которая заинтересована в IframeShim.destroy вот так

destroy: function(){
        if (this.shim) this.shim.destroy();
        return this;
    }

Теперь, что я не могу понять в этом, что такое shim.В частности, я пытаюсь понять, что это Request.JSONP.cancel его код такой

cancel: function(){
        if (this.running) this.clear().fireEvent('cancel');
        return this;
    }

теперь эта отмена вызывает clear чей код такой

clear: function(){
        this.running = false;
        if (this.script){
            this.script.destroy();
            this.script = null;
        }
        return this;
    }

Теперь в этой понятной функции я вижу destroy(), который приводит меня к shim (см. Код вверху), и я застреваю.Все эти функции находятся в mootools-more.js

Справка?

было бы замечательно, если бы кто-то мог предоставить простую реализацию JavaScript Request.JSONP.cancel Имеется ли альтернатива JQuery?

1 Ответ

1 голос
/ 29 июля 2011

Уничтожение, которое вызывается методом Request.JSONP.clear, не IframeShim.destory, это часть ядра mootools.Вот источник:

destroy: function(){
    var children = clean(this).getElementsByTagName('*');
    Array.each(children, clean);
    Element.dispose(this);
    return null;
},

Все, что Element.dispose делает, это вызывает собственный метод DOM jasvascript Node.removeChild , который удаляет элемент из DOM.

Итаквсе, что JSONP.cancel делает, это проверяет, был ли DOM-узел сценария добавлен через Request.JSONP.cancel.Если это так, он удаляет элемент script из DOM с помощью removeChild.

Важно то, что он установил флаг running в значение false.Если вы посмотрите на Request.JSONP.success, первое, что он делает перед вызовом вашей функции обратного вызова, это проверка, установлен ли флаг running в значение false, и если это так, он сразу же возвращается.Это фактически «отменяет» выполнение.

Если вы имели в виду, отменяет ли он HTTP-запрос, ответ - нет, это не так.

...