JavaScript (DOM): SCRIPT要素の直前に任意の要素を挿入する方法

SCRIPT要素を取得しておいて、(その要素の親要素を取得して)insertBefore()する。

SCRIPT要素が構築された直後に要素中のスクリプトが実行されるので、SCRIPT要素自身の代入はそのSCRIPT内に記述でOK。domReadyとか小細工せずに素直に代入する(そうしなければならない)。

一方insertしたい要素はDOMツリー中になければいけないので、domReadyとかでツリーができるのを待つ必要がある。
 

<script type="text/javascript" ><!-- // --><![CDATA[
 var currentScript = (function (e) {
  if(e.nodeName.toLowerCase() == 'script') return e;
  return arguments.callee(e.lastChild)
 })(document);

 Event.domReady.add(function() {
  function ( node, referenceNode ) {
   if ( typeof(referenceNode) == 'undefined' ) {
    referenceNode = currentScript;
   }
   referenceNode.parentNode.insertBefore( node, referenceNode.nextSibling );
  }($('testid'));
 })
// ]]></script>


id=testidな要素が(あれば)その位置(の直前)に挿入される。(なければエラーになるので事前に調べるようにするとなお良し)

domready.js をDOMツリー構築を待つために、
prototype.js を任意のIDの要素を取得するのに使用している。使わなくても同等のことをすればOK。

http://d.hatena.ne.jp/amachang/20061201/1164986067
http://blog.nyarla.net/2006/12/02/1
上記2サイトに多謝。

Leave a Reply