someDOMElement.getLastChild()
Firefoxでは、次のように記述します。
HTMLElement.prototype.getLastChild = function() { var childndex = null; for(i = this.childNodes.length; i> 0; i--) { if(this.childNodes [i-1] .nodeType!= 1) 続ける; childIndex = i-1; 休憩; } return this.childNodes [childIndex]; }
IEでは、要素の客観性の不器用なサポートにより、このようなチップは合格しません。 その中のすべてのオブジェクトはObjectクラスまたはその派生Elementのものですが、それらを拡張することは不可能です。 特定の各インスタンスのみが可能です(ドキュメントのすべてのDOM要素を調べます)。 ソリューションはHTCテクノロジー(HTMLコンポーネント)で見つかりました。これはIE5.5以降でサポートされています
詳細は説明しませんが、すぐにこれを行う方法に進みます(多くの場合、詳細を理解するにはこれで十分です)。
<PUBLIC:COMPONENT lightWeight = "true" literalContent = "true"> <PUBLIC:メソッド名= "getLastChild" /> <SCRIPT LANGUAGE = "javascript1.3" type = "text / javascript"> 関数getLastChild() { var childndex = null; for(i = childNodes.length; i> 0; i--) { if(childNodes [i-1] .nodeType!= 1) 続ける; childIndex = i-1; 休憩; } return childNodes [childIndex]; } </ SCRIPT> </パブリック:コンポーネント>
<PUBLIC:COMPONENT lightWeight = "true" literalContent = "true">
コンポーネント定義の始まりを示します。 lightWeightは、簡単に言えば、説明以外のものはないことを意味します。 literalContentは、コードがXHTMLパーサーによって解析されず、Javascriptパーサーにすぐに渡されることを意味します。
上記のコードは、拡張子が「.htc」の別のファイルに配置する必要があります。 条件付きコメントでは、ページへの接続が優れています。
<!-[IEの場合]> <スタイル> * { 動作:URL( '/ uri / to / file.htc'); } </ style> <[endif]->
今のコード:
var el = document.getElementsByTagName( "body")[0] .getLastChild();
FFとIEの両方で動作します。
そのようなコードは、残念ながらOpereや他のブラウザーでは動作しません。 しかし、他のブラウザでこれを実装する方法を見つける(または誰かが教えてくれる)と思います。
当然、HTCテクノロジーはこれに限定されず、新しいイベント、プロパティ、デフォルト値を追加したり、独自のタグを作成したりできます。