2010-10-06 4 views
2

J'ai une page HTML qui a cette doctype:Comment obtenir un attribut NON-standard dans IE8 via javascript?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

Cependant, le code HTML contient cette balise:

<applet src="blahblah"></applet> 

(EDIT:. En fait le HTML ne contient pas l'applet L'applet est créé dynamiquement par un autre code javascript).

Oui, je sais que applet est obsolète, et je sais qu'une balise applet ne peut pas contenir un attribut src, mais je ne peux pas éditer ce code HTML.

Le problème est ce code Javascript:

alert(appletElement.getAttribute('src')); 

En FF et Chrome, il montre "blahblah", mais IE8 il montre null. En outre, appletElement.attributes['src'] n'est pas défini.

Quelqu'un sait comment obtenir l'attribut src dans IE8 en mode strict?

Merci

Répondre

0

J'ai trouvé une solution.

Au lieu d'utiliser document.createElement pour créer ces applets dynamiquement, j'utiliser cette fonction:

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

Works pour moi dans IE8.

+0

Ok, je ne suis pas sincère dans ma question. L'objet applet n'est pas inséré dans le code HTML, est créé dynamiquement avec document.createElement. Lorsque vous définissez un attribut non standard sur cette applet, vous ne pouvez pas le récupérer plus tard. Il renvoie 'null' jamais. – Nitz

0

Avez-vous essayé

appletElement.src 
+0

Ça ne marche pas :( – Nitz

Questions connexes