スクリプトが配置されている場所で、DOM要素をページに追加する必要があるスクリプトを作成しています(ウィジェットのようなアプローチ)。これを行うための最良の方法は何ですか?
これが私が検討しているテクニックです:
- スクリプトのすぐ上にid="Locator"を持つ要素を含めます。問題:
- 余分なマークアップは好きではありません
- ページでウィジェットを再利用すると、複数の要素が同じ「ロケーター」IDを持ちます。スクリプトに行を追加して、一度使用したIDを削除することを考えていましたが、それでも...
- スクリプトにIDを追加します。問題:
- 動作しているように見えますが、id属性はscript要素に対して無効です
- 上記と同じ問題ですが、ページでスクリプトを再利用すると、いくつかの要素が同じIDになります。
- getElementsByTagName( "script")を使用して、最後の要素を選択します。これはこれまでのところうまくいきましたが、少し重いようで、信頼できるかどうかはわかりません(遅延スクリプトについて考えてみてください)
document.write:エレガントではありませんが、仕事をしているようです。
[編集]idealmachineからの返信に基づいて、もう1つのオプションについて考えています。
- スクリプトタグに属性を含めます(例:goal = "tabify")。
- getElementsByTagName( "script")を使用して、すべてのスクリプトを取得します。
- スクリプトをループし、goal="tabify"属性をチェックしてスクリプトを見つけます。
- ページに別のウィジェットがある場合は、goal属性を削除してください。
[編集]これまでの返信からもインスピレーションを得た別のアイデア:
- getElementsByTagName( "script")を使用して、すべてのスクリプトを取得します。
- スクリプトをループし、innerHTMLをチェックしてスクリプトを見つけます。
- スクリプトの最後で、ページに別のウィジェットがある場合に備えて、スクリプトタグを削除します。