insertBeforeは親子関係でないと使えない

この前、DOMのinsertBeforeで要素を追加しようとしたのですが、なぜかうまくいかず、エラーが出て困ってしまいました。
ただ、最初からエラーが出ていたわけではなく、突然エラーが出るようになったのでさっぱりでした。
しかし、追っていくとDOMで操作しようとしていたHTMLの構造が変化していることに気がつきました。


以前はこのような構造でした。

<!--略-->
<div id="parent">
	<!--ここに入れたい!-->
	<div id="target">hoge</div>
</div>
<!--略-->
<script type="text/javascript">
<!--
var insElem = document.createElement("div");
insElem.id = "inserted";
insElem.innerHTML = "inserted!";
var parPos = document.getElementById("parent");
var basePos = document.getElementById("target");
parPos.insertBefore(insElem,basePos);
//-->
</script>


変更後はこのようになっていました。

<!--略-->
<div id="parent">
	<!--ここに入れたい!-->
	<div id="wrapper">
		<div id="target">hoge</div>
	</div>
</div>
<!--略-->
<script type="text/javascript">
<!--
var insElem = document.createElement("div");
insElem.id = "inserted";
insElem.innerHTML = "inserted!";
var parPos = document.getElementById("parent");
var basePos = document.getElementById("target");
parPos.insertBefore(insElem,basePos);
//-->
</script>


前者はもちろん正しく動きます。
ただ、後者は場所がおかしいものの入る、ということはなくエラーになってしまいます。
子孫関係ではなく、親子関係でないとinsertBeforeが使えないんですね……。
※よく考えれば子孫関係で良ければ適当にbody等を対象に取ってもよくなってしまいますね。

この辺り、JavaScript標準のDOM操作メソッドだけでは結構面倒なのですが、この前jQueryを使ってみたらあまりの簡単さに驚きました。
諸事情で毎回jQueryを使えるわけではないですが、jQuery等のJavaScriptライブラリも勉強して使っていきたいところです。