5

jQuery-svgを使用して、このようなコードがあります

function replaceRaster(){
    $('#png').remove()
    a = $('#graphic')
    b = a.svg(a)
    a.load('IDC_Energy.svg',
         {onLoad:bind} )
   svg = document.getElementById("graphic").children[0]
   console.log(svg)
   svg.addEventListener('load', bind)
}

イベント ハンドラー はbind、jQuery-svg-dom が SVG データ内の要素を選択できるようになる前に起動されます。私のコードは、SVG を調べて、さまざまなクラスを割り当て、さまざまな要素にリスナーをアタッチすることになっていますが、何も見つかりません。すべてがロードされた後にコンソールを呼び出すbindと、すべての SVG 要素を見つけることができます。

私は何か間違ったことをしていますか?SVG DOM がいつ利用可能かを検出する別の方法はありますか? 私はタイマーを使用することを考えましたが、特に SVG ファイルが数 MB になる可能性があることを考えると、それは本当にハックです。

4

1 に答える 1

0

タイマー遅延が「0」または「10」のタイマーを使用してみましたか? 再描画が完了した後にタイマーが起動されるため、この手法を頻繁に使用して、現在の実行ループから作業をプッシュしました。運が良ければ、バインドは再描画が終了した後にのみ起動されます。ページで他に何をしているのかわからないため、これが特定のインスタンスで役立つかどうかはわかりません。たとえば、非同期データ処理が行われている場合は役に立ちません。

于 2012-07-11T11:53:37.793 に答える