普通のブラウザだと parent.removeChild(child); alert(child.parentNode); // null なぜか、 IE だと DocumentFragment が生成されている。 parent.removeChild(child); alert(child.parentNode); // [object] alert(child.parentNode.nodeName); // #document-fragment な、なぜ? 変なブラウザだなー
HTML5をサポートしていないIE6〜IE8で、node.innerHTML = " ..."; のように HTML5 で追加された新要素含んだ文字列を innerHTML に与えると、次のいずれかの条件が成立した場合に親子関係の崩れたサブツリーを生成してしまいます。 innerHTML の前に document.createElement() が実行されていない node が DOM Tree に参加していない(オンザフライ) これらを回避するには、IE6〜IE8で以下のようします。 document.createElement("section"); // HTML5 Shiv function build(fragment) { // @param HTMLDocumentFragmentString: "<nav>...</nav>" // @return DocumentFrag
Microsoft Developer Blogs Get the latest information, insights, and news from Microsoft. AI agents are quickly moving from experiments to production‑critical components of modern applications. But while many teams know how to build agents, far fewer are confident they’re hosting them on the right foundation. Most organizations start by deploying agents the same way... We're shipping two major capa
Windows Internet Explorer 9 JavaScriptプログラミングでフラストレーションが溜まるポイントのひとつに、IEとそれ以外のブラウザで記述方法が異なることを挙げることができる。特にDOM周りのコーディングはIEだけ別の記述をしなければならない。しかし、これもIE8までの話ということになりそうだ。現在開発が進められているIE9ではこうした問題が解決している。どういった変更を実施したかがIEBlogのExploring IE9's Enhanced DOM Capabilitiesに詳しく説明されている。 これまでIEだけはDOM周りの実装がほかのブラウザと違っていた。これはDOMへのアクセスにCOMを使っていたことに原因がある。結果として、プログラマがすべてのブジェクトに期待する機能がIEの提供するDOMオブジェクトにだけは存在せず、別の方法を使って実現する必要
@uupaa DOMReady (function wait(){try{(new Image).doScroll();if(document.body){OK();}else{setTimeout(wait,0);}}catch(err){setTimeout(wait,0);}})() 2010-07-23 00:17:02 @uupaa IE用の DOMContentReady が <iframe> で動かすと穴があるので調べ物してる。<iframe>内だと、doScroll() が通っても、<body>にアクセスできないタイミングがあるんだねっと 2010-07-22 23:58:50
はじめに IE では透明なオーバーレイ要素のマウスイベントのハンドリングがおかしい たとえば 以下のページで表示されている要素には透明な div がオーバーレイされています。そして、その要素に mouseover が発生すると背景を青くしています。 試してみてください。 IE では、想定の挙動ができていないことが分かると思います。 http://amachang.sakura.ne.jp/misc/mouseoutover/ ソースコードは以下。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <style> p { border: solid 10px gray; background: pink; padding: 10px; margin: 10px; line-height: 2; }
IE における cloneNode の困った挙動について調べてました。 cloneNodeの仕様 IEでオレオレ属性を追加しcloneNodeすると、参照が作成されてしまいます。 <div id="AAA">NodeA</div> var AAA = document.getElementById("AAA"); AAA.oreoreAttr = { key: 1 }; var BBB = AAA.cloneNode(); // BBB を作成 AAA.oreoreAttr.key = 2; // AAA に 2 を設定すると… alert(BBB.oreoreAttr.key); // BBB も 2 になってしまう このような挙動が問題になるのは、以下のように、不可視な属性を設定していた場合に、cloneNodeで参照が作成されてしまい、あっちを変えるとこっちも変わってしまうケースです
オレオレ要素が消せない → オレオレプロパティが消せない 余談だけどそれは「属性(アトリビュート)」またはJS的に「プロパティ」と呼ぶものだと思う。「要素」だとHTML要素のことだと思ってしまう。 by Yuichirou たしかに。 Yuichirou さん ありがとう! 本文 document.body.hoge = {}; delete document.body.hoge; // IE6 でエラーになる, IE8 は大丈夫delete ではなく、こうします。 document.body.hoge = {}; document.body.hoge = void 0;document.body に限らず、Node だとダメなようです。IE7でどうなるかは試してません。 IE以外のブラウザは、どちらの方法でもオレオレプロパティを削除できます。 追記 『試したのはIE6だけですが、remo
YUIにおけるイベント管理 で書いたとおりイベントハンドラonloadは画像を含むすべてのコンテンツがロードされてから関数を実行する。 それがいやな人は、JQueryのdocument.ready()とかYUIのYAHOO.util.Event.onDOMReadyを利用してDOM構造が構築された時点で関数を実行するようにする。 DOM構築がされていないのにappendChildをやるとブラウザが(IEが)クラッシュするからだ。 (「インターネットサイトhttp://〜〜は開けません。操作は中断されました」となんとも不親切なエラーが出る) #googleMapの貼り付けで同エラーが発生するのもDOMの動的な生成が原因かもしれない。(GoogleMap貼り付けたことないから知らないけど DOM構造が実行可能かどうかの判別方法はブラウザ毎に方法があるが、YUIライブラリのonDOMReadyの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く