Comment modifier la valeur de l'attribut HTML Object element data en javascript

Comment modifier la valeur de l'attribut HTML Object element data en JavaScript?

Voici ce que j'essaie

<object type="text/html" id="htmlFrame" style="border: none;" standby="loading" width="100%"></object> var element = document.getElementById("htmlFrame"); element.setAttribute("data", "http://www.google.com"); 

Et en jquery:

 $('element').attr('some attribute','some attributes value') 

c'est à dire

 $('a').attr('href','http://www.stackoverflow.com/') 

Cela marche:

 <html> <head></head> <body> <object type="text/html" id="htmlFrame" style="border: none;" standby="loading" width="100%"></object> <script type="text/javascript"> var element = document.getElementById("htmlFrame"); element.setAttribute("data", "attributeValue"); </script> </body> </html> 

Si vous mettez cela dans un fichier, ouvrez un navigateur Web, le javascript s'exécute et l'attribut "données" + valeur sera ajouté à l'élément objet.

Remarque: Si vous regardez simplement la source HTML, vous ne verrez PAS l'attribut. C'est parce que le navigateur vous montre la source statique envoyée par le serveur web, PAS le DOM dynamiquement rendu. Pour inspecter les DOM, utilisez un outil comme Firebug . Cela vous montrera le DOM que le navigateur a rendu, et vous pourrez voir l'attribut ajouté.

À l'aide de Firefox + Firebug ou Google Chrome, vous pouvez cliquer avec le bouton droit de la souris sur une partie d'une page et faire "Inspecter l'élément". Cela affichera une vue du DOM rendu.

En JavaScript, vous pouvez attribuer des valeurs aux attributs de données via Element.dataset.

Par exemple:

 avatar.dataset.id = 12345; 

Référence: https://developer.mozilla.org/fr/docs/Web/API/HTMLElement/dataset

Le comportement des objets hôtes <object> est dû à la dépendance de l'implémentation ECMA262 et l'attribut set attribué par la méthode setAttribute() peut échouer.

Je vois deux solutions:

  1. Soft: element.data = "http://www.google.com";

  2. Dur: supprimez l'objet de l'arborescence DOM et créez un nouvel attribut de données modifié.

Le code suivant fonctionne si vous utilisez jquery

 $( "object" ).replaceWith('<object data="http://www.google.com"></object>');