Comment modifiez-vous la valeur d'attribut de données d'élément d'objet HTML en JavaScript?
Voici ce que j'essaye
<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-y un navigateur Web, le javascript sera exécuté et l'attribut "data" + valeur sera ajouté à l'élément object.
Remarque: Si vous regardez simplement la source HTML, vous ne verrez PAS l'attribut. En effet, le navigateur vous montre la source statique envoyée par le serveur Web, PAS le DOM rendu dynamiquement. Pour inspecter le DOM, utilisez un outil tel que Firebug . Cela vous montrera quel DOM le navigateur a rendu et vous pourrez voir l'attribut ajouté.
En utilisant Firefox + Firebug ou Google Chrome, vous pouvez cliquer avec le bouton droit de la souris sur une partie de la page et faire "Inspecter élément". Cela fera apparaître 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/en/docs/Web/API/HTMLElement/dataset
document.getElementById("PdfContentArea").setAttribute('data', path);
OR
var objectEl = document.getElementById("PdfContentArea")
objectEl.outerHTML = objectEl.outerHTML.replace(/data="(.+?)"/, 'data="' + path + '"');
Le comportement des objets hôtes <object>
est dû à l'implémentation ECMA262 et l'attribut set by setAttribute()
peut échouer.
Je vois deux solutions:
soft: element.data = "http://www.google.com";
hard: supprime l'objet de l'arborescence DOM et en crée un avec l'attribut de données modifié.
Le code suivant fonctionne si vous utilisez jquery
$( "object" ).replaceWith('<object data="http://www.google.com"></object>');