我有一个包含此doctype的HTML页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
但是,HTML包含此标记:
<applet src="blahblah"></applet>
(编辑:实际上HTML不包含applet。小程序是由其他javascript代码动态创建的。)
是的,我知道applet
已被弃用,我知道applet
标记不能包含src
属性,但我无法编辑该HTML代码。< / p>
问题是这个Javascript代码:
alert(appletElement.getAttribute('src'));
在FF和Chrome中,它显示“blahblah”,但在IE8中显示null
。此外,appletElement.attributes['src']
未定义。
有人知道如何在IE8中使用严格模式获取src
属性吗?
由于
答案 0 :(得分:3)
<!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中为我工作。
答案 1 :(得分:0)
你试过吗
appletElement.src
答案 2 :(得分:0)
我找到了解决方案。
我没有使用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;
}