コード:
<circle id="whitecircle" cx="500" cy="500" r="25" fill="url(#grad1)" onclick="setCoordinates(evt)" />
これは完全にうまく機能します。「setCoordinates(evt)」関数は、クリックしたときに円にランダムな位置を与えます。
しかし、「onload」で「onclick」を再生すると、「500,500」のままです。
どうしてこれなの?
コード:
<circle id="whitecircle" cx="500" cy="500" r="25" fill="url(#grad1)" onclick="setCoordinates(evt)" />
これは完全にうまく機能します。「setCoordinates(evt)」関数は、クリックしたときに円にランダムな位置を与えます。
しかし、「onload」で「onclick」を再生すると、「500,500」のままです。
どうしてこれなの?
要素は外部コンテンツをロードしていません。ロードするものがないため、ロードイベントはありません。
円要素を定義した直後にスクリプトを実行できます。
<circle ... />
<script> function_call() </script>
(HTMLbody
要素は特殊なケースであり、現在のドキュメントを表します)
<svg>
Firefox では、パフォーマンス上の理由から、onload イベントは要素にのみディスパッチされます。Firefox には、onload イベントを<image>
要素にディスパッチしないという既存のバグがありますが、現時点では<svg>
要素のみがクロスブラウザーで動作します。
onload イベントでもこの問題が発生することがあります。JavaScript 呼び出しをページの最後に移動します。