используя jQuery после чужого Javascript - PullRequest
1 голос
/ 09 февраля 2009

Сценарий: У меня есть сгенерированная Javascript веб-страница, которую давно написал кто-то другой, и я бы хотел накраситься с помощью jQuery. Моя цель - очистить сгенерированный Javascript HTML, который кто-то другой создает, просто используя некоторые вызовы jQuery для этого HTML, после того как он был сгенерирован.

Это будет намного проще, чем изменение Javascript другого человека напрямую, по крайней мере, на данный момент.

Моя первая попытка состояла в том, чтобы просто добавить тег script в конце заголовка HTML, который вызывает нужный код jQuery.

    <script src="/someone-elses-js-generator.js" />
    <script>
    $(document).ready(function() {
        alert('the other stuff ran, now do the jquery cleanup');
        $('.foobar').css("display","none");
        $('.doobar').css("display","inline");
        /// ... so on and so forth ...
    });
    </script>

Проблема: Вышеописанное работает просто отлично, но когда я закомментирую сообщение «alert». Jquery больше не выполняет очистку. По-видимому, происходит то, что окно сообщения с предупреждением задерживало выполнение последующего кода очистки, что замечательно, но без предупреждения jQuery, похоже, запускается до того, как другой javascript завершит вывод.

Вопрос: Есть ли способ заставить код очистки jQuery запускать после кода js-генератора, но без необходимости вставлять в него поле alert ()

Ответы [ 5 ]

5 голосов
/ 09 февраля 2009

Возможно, $(document).ready() - неправильный путь.

Как запускается другой скрипт? Если он установлен на window.onload, то, вероятно, он запускается только после запуска вашего jQuery.

Вы хотите подождать, пока другой скрипт не остановится. Вероятно, лучший способ сделать это - обернуть ваш jQuery в функцию и вызвать его из другого скрипта, когда вы уверены, что он завершен.

1 голос
/ 09 февраля 2009

Я думаю, вам, вероятно, нужно выяснить, почему код другого кодера задерживается. Если он не запускается сразу и нет причин, по которым он не может, вы можете обернуть его функциональность в анонимную функцию и сразу запустить ее.

(function() {
    /*
    Other coder's code here
    */
 })(); //run this function and the code inside it immediately.
1 голос
/ 09 февраля 2009

Вы можете отложить код очистки до некоторой степени, используя следующую функцию JavaScript:

setTimeout('JS Cleanup Code', number_of_miliseconds);
1 голос
/ 09 февраля 2009

Вы можете поставить

$(document).ready(function() { ... });

В конце /someone-elses-js-generator.js или в конце логики манипуляции в этом файле.

0 голосов
/ 09 февраля 2009

Вы также можете попробовать вызвать код очистки через секунду, используя setTimeout ();

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