Как получить нестандартный атрибут в IE8 через JavaScript? - PullRequest
2 голосов
/ 06 октября 2010

У меня есть 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 ]

3 голосов
/ 06 октября 2010
<!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.

0 голосов
/ 07 октября 2010

Я нашел решение.

Вместо использования 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;
}
0 голосов
/ 06 октября 2010

Вы пробовали

appletElement.src
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...