Jintrick.netagenda2004年03月アーカイブ → 2004年03月09日

Re: 原因究明は難航中

じつは NN7.1 でも閲覧できますよ、という話があるんです。困りましたね、これは。

私の環境では、何故か履歴で戻るといつの間にか表示されていたりして、かなり不思議な挙動です。それはともかく、徳保さん的にはやはり将来を見据えたスクリプトが好ましいのでしょうし、そういう態度を期待?していますから、バグの原因云々より先にまずブラウザの独自拡張(メソッド|アトリビュート)の方に気遣って貰いたい気がします。弱い希望ですけれど。

例えばここ:

 if(document.all)
  obj.insertAdjacentHTML('beforeBegin',
      '<div class="selectsheet">'+nHTML+'</div>');

document.allがundefinedでないブラウザが、insertAdjacentHTMLメソッドを実装していると、どうして分かりましょう。

if (obj.insertAdjacentHTML)

とすべきではないでしょうか。これにしたって同名の違うメソッドである可能性も否定できませんから、万全ではない(何の保証もない)。とすれば、何らかの標準的な規格、例えばDocument Object Modelにあるメソッドを使用した方がベターなのではないでしょうか(因みにUserAgent名で判別する人も多いようですが、あんなもののどこに一意性があるでしょうか)。

 else{
  var nDIV=document.createElement('DIV');
  nDIV.innerHTML=nHTML;
  nDIV.className="selectsheet";
  obj.parentNode.insertBefore(nDIV, obj); 
 }

ここのcreateElementメソッドで作成されているのはDOM level1 HTMLのHTMLDivElementインターフェイスをもったオブジェクトです。このオブジェクトにinnerHTMLアトリビュートは定義されていませんから、何かを代入しても表示上何も起こらないのがDOM的に見て標準動作です。ECMAScriptでなかったらまずエラーでは。

皆やっていることですし私もやっていましたが、徳保さんにはやって貰いたくない気がします。私はinnerHTMLの書き換えが低速だからやらないだけですが。あと、将来性を考えるなら広域変数をもう少し減らした方がお得だと思いますがどうでしょうか。


webmaster@jintrick.net
公開: 2004年03月09日
カテゴリ: Javascript ,意見交換, 批判等