如何通过javascript在IE8中获取非标准属性?

时间:2010-10-06 09:31:43

标签: javascript html internet-explorer-8 strict

我有一个包含此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属性吗?

由于

3 个答案:

答案 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;
}