2016-05-12 5 views
0

ライブラリの呼び出しが完了した後に実行する必要があるJavaScriptコードがあります。ライブラリはメインページにキャンバスを生成します。既に試しましたwindow.onload、defer、async、$(window).bind( "load"、function)しかし、何も動作していないようです。前述のライブラリは、JS内で一連の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(); 
} 

...しかし、それには多くのifとbutsがあり、上記の例では非常に単純なケースが必要です。

+0

どういうわけか、このコードが動作している理由を教えてください。 window.onload = setTimeout(foo、0); @Quentin – iroh

+0

いいえ、あなたはすべての行動を理解するのに十分なコードを提供していません。 'onload'の使用はまったく無意味ですが、関数に代入できるのは' setTimeout'の戻り値です。 – Quentin

+0

私がwindow.onload = setTimeout(foo、0)を使うと、 window.onload = fooが動作しない場合、fooはすべてのブラウザでページを読み込んだ後に実行され、pageloadの前にfooを実行します。 – iroh

0

これは私がそれを解決した方法です。 ページ上の特定の要素の読み込み後に実行する必要がある関数fooがあるとします。私はclearintertervalを使用した後、成功するまで関数を100msごとに呼び出すためにsetintervalを使用しました。何かのような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 –

関連する問題