IE6 не может найти элемент Object с getElementById ()?
-
22-07-2019 - |
Вопрос
Я пытаюсь получить элемент объекта со своей веб-страницы, используя getElementById (в конечном итоге, чтобы я мог заменить его динамически созданным элементом объекта), но он возвращает null
в IE6.
В следующем коде функция byId()
возвращает [object HTMLObjectElement]
в IE, но lengthOfByTagName()
в Firefox 3, а функция 0
возвращает 1
в IE, но <=> в 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 обрабатывает < object > узлы по отношению к DOM.
Поскольку вы все равно динамически заменяете, я рекомендую вместо этого создать < div > где вам это нужно, и измените 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 <> амп;! MSPPError = -2147217396 а > журнал
Предложите использовать jQuery для обработки большинства случаев
jQuery
var video = $("#VideoPlayer");
alert(video);
Попробуйте это в своем коде.