IE6はgetElementById()でオブジェクト要素を見つけることができませんか?
-
22-07-2019 - |
質問
getElementByIdを使用してWebページからオブジェクト要素を取得しようとしています(最終的には動的に作成されたオブジェクト要素に置き換えることができます)が、IE6ではnull
を返しています。
次のコードでは、byId()
関数はIEでは[object HTMLObjectElement]
を返しますが、Firefox 3ではlengthOfByTagName()
を返し、0
関数はIEでは1
を返しますが、Firefoxでは<=>を返します。
間違っていることはありますか?
<html>
<head>
<title>IE doesn't see Object element?</title>
<script type="text/javascript">
function byId()
{
var video = document.getElementById("VideoPlayer");
alert(video);
}
function lengthOfByTagName()
{
var length = document.getElementsByTagName("object").length;
alert(length);
}
</script>
</head>
<body>
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
VideoPlayer element
</object>
<br>
<br>
<a href="#" onclick="javascript:byId()">getElementById("VideoPlayer")</a>
<br>
<a href="#" onclick="javascript:lengthOfByTagName()">getElementsByTagName("object").length</a>
</body>
</html>
解決
これは、IEが<!> lt; object <!> gt;を処理する方法が原因です。 DOMに対するノード。
とにかく動的に置き換えるので、代わりに<!> lt; div <!> gt;を作成することをお勧めします。必要な場所でinnerHTMLを必要なオブジェクトのHTMLに変更します。
他のヒント
IE 7でテストしたところ、説明どおりの動作を確認しました
Internet Explorerは、<object>
タグ内のフリーテキストを予期していません。サンプルでDebugbarを使用すると、IEが適切なDOMツリーを構築しないことがわかりました。
代わりにこのコードを使用
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
</object>
期待どおりに動作します。
IE6では、動作しない場合があります。参照: https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255 <!> amp; MSPPError = -2147217396 雑誌
jQuery を使用してほとんどのケースを処理することを提案する
jQuery
var video = $("#VideoPlayer");
alert(video);
コーディングでこれを試してください。