2016-05-12 5 views
0

У меня есть код javascript, который необходимо выполнить после завершения вызова библиотеки, библиотека создает холст на главной странице. Я уже пробовал window.onload, defer, async, $ (window) .bind («load», function), но ничего не работает. Вышеупомянутая библиотека делает серию вызовов функций JS внутри себя. Я открыт для использования любого плагина любым способом, пока он позволяет мне выполнять мой код после загрузки страницы.Как выполнить код javascript строго после полной загрузки страницы?

+0

В какой библиотеке вы используете? Вероятно, он определил свои собственные события, которые вам придется использовать. –

+0

Я использую bpmn.io [bpmn io] (https://github.com/bpmn-io). – iroh

ответ

1

Невозможно в общем подключиться к «Когда какой-то произвольный скрипт закончил делать то, что он делает».

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

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

например.

var original_make_canvas(); 
make_canvas = function make_canvas() { 
    original_make_canvas(); 
    do_something_else(); 
} 

... но есть много МСФ и Буц к тому, что и в приведенном выше примере потребуется очень упрощенный случай.

+0

как-то этот код работает, можете ли вы сказать мне, почему? window.onload = setTimeout (foo, 0); @Quentin – iroh

+0

Нет. Вы не указали достаточно кода, чтобы понять все поведение. Однако использование 'onload' совершенно бессмысленно, вы можете назначить ему только функцию, а возвращаемое значение' setTimeout' - это число. – Quentin

+0

Если я использую window.onload = setTimeout (foo, 0); то foo запускается после загрузки страницы во все браузеры, однако window.onload = foo не работает, он выполняет foo перед pageload. – iroh

0

Так я решил это. Предположим, что у меня есть функция foo, которая должна быть выполнена после загрузки определенного элемента на странице. Я использовал setinterval для вызова функции каждые 100 мс, пока она не удалась, после чего я использовал clearInterval. Что-то вроде Stop setInterval call in JavaScript.

+0

ответы на вопрос хорошо, но с некоторыми требованиями. Убедитесь, что вы отдаете должное любым полезным ответам, если его небольшая настройка на одном из них, чем принятие этого, и добавьте примечание * UPDATE * к вопросу, которое показывает, что вы использовали его для ответа на вопрос. Если ваш ответ слишком отличается от других сообщений, подождите 48 часов, затем создайте его и примите его так, чтобы он был помечен как таковой. В обоих случаях он должен четко указать, как других ответов (в то время) не хватало. http://stackoverflow.com/help/how-to-ask, http://stackoverflow.com/help/someone-answers, http://stackoverflow.com/help/self-answer –

Смежные вопросы