Как получить нестандартный атрибут в IE8 через JavaScript?
У меня есть HTML-страница, которая имеет этот тип документа:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Тем не менее, HTML содержит этот тег:
<applet src="blahblah"></applet>
(РЕДАКТИРОВАТЬ: на самом деле HTML не содержит апплет. Апплет создается динамически с помощью другого кода JavaScript).
Да, я знаю это applet
устарела, и я знаю, что applet
тег не может содержать src
атрибут, но я не могу редактировать этот HTML-код.
Проблема заключается в следующем коде Javascript:
alert(appletElement.getAttribute('src'));
В FF и Chrome он показывает "бла", а в IE8 - null
, Также, appletElement.attributes['src']
не определено.
Кто-нибудь знает, как получить src
атрибут в IE8 со строгим режимом?
Спасибо
3 ответа
Решение
Я нашел решение.
Вместо того, чтобы использовать document.createElement
чтобы динамически создавать эти апплеты, я использую эту функцию:
function wrs_createElement(elementName, attributes, creator) {
if (attributes === undefined) {
attributes = {};
}
if (creator === undefined) {
creator = document;
}
var element;
/*
* Internet Explorer fix:
* If you create a new object dynamically, you can't set a non-standard attribute.
* For example, you can't set the "src" attribute on an "applet" object.
* Other browsers will throw an exception and will run the standard code.
*/
try {
var html = '<' + elementName + ' ';
for (var attributeName in attributes) {
html += attributeName + '="' + attributes[attributeName].split('"').join('\\"') + '" ';
}
html += '>';
element = creator.createElement(html);
}
catch (e) {
element = creator.createElement(elementName);
for (var attributeName in attributes) {
element.setAttribute(attributeName, attributes[attributeName]);
}
}
return element;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<title>Test Case</title>
<applet id="myapplet" src="blahblah"></applet>
<script>
var aplt = document.getElementById('myapplet');
alert(aplt.getAttribute('src'));
</script>
У меня работает в IE8.