문제

getElementById를 사용하여 웹 페이지에서 객체 요소를 얻으려고 노력하고 있습니다 (궁극적으로 동적으로 생성 된 객체 요소로 교체 할 수 있음). null IE6에서.

다음 코드에서 byId() 기능이 반환됩니다 null IE에서는 [object HTMLObjectElement] Firefox 3과 lengthOfByTagName() 기능이 반환됩니다 0 즉,하지만 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가 대하는 방식 때문입니다u003Cobject> DOM에 대한 노드.

어쨌든 동적으로 교체하므로 대신u003Cdiv> 필요한 경우, InnerHTML을 변경하여 필요한 개체의 HTML로 변경하십시오.

다른 팁

방금 IE 7에서 테스트했고 설명 된대로 동작을 보았습니다.

Internet Explorer는 무료 텍스트를 기대하지 않습니다 <object> 꼬리표. Debugbar를 사용하여 IE가 올바른 DOM 트리를 구축하지 않도록 Proed 샘플을 사용합니다.

대신이 코드를 사용하십시오

<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&mspperror=-2147217396잡지

사용 제안 jQuery 대부분의 경우를 처리합니다

jQuery

var video = $("#VideoPlayer");

alert(video);

코딩에서 이것을 시도하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top