Wie ändern Sie den Wert eines HTML-Objektelement-Datenattributs in JavaScript?
Hier versuche ich es
<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");
und in jquery:
$('element').attr('some attribute','some attributes value')
d.h.
$('a').attr('href','http://www.stackoverflow.com/')
Das funktioniert:
<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>
Wenn Sie dies in einer Datei ablegen, öffnen Sie einen Webbrowser. Das Javascript wird ausgeführt und das Attribut "data" + value wird dem Objektelement hinzugefügt.
Hinweis: Wenn Sie nur den HTML-Quellcode betrachten, wird das Attribut NICHT angezeigt. Dies liegt daran, dass der Browser Ihnen die statische Quelle anzeigt, die vom Webserver gesendet wird, NICHT das dynamisch gerenderte DOM. Verwenden Sie zum Überprüfen des DOM ein Tool wie Firebug . Dies zeigt Ihnen, was der Browser vom DOM gerendert hat, und Sie können das hinzugefügte Attribut sehen.
Mit Firefox + Firebug oder Google Chrome können Sie mit der rechten Maustaste auf einen Teil einer Seite klicken und "Element prüfen" ausführen. Dadurch wird eine Ansicht des gerenderten DOM angezeigt.
In JavaScript können Sie Datenattributen über Element.dataset Werte zuweisen.
Zum Beispiel:
avatar.dataset.id = 12345;
Referenz: https://developer.mozilla.org/de/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 + '"');
Das Verhalten der Host-Objekte <object>
hängt von der Implementierung der ECMA262 ab, und das gesetzte Attribut der setAttribute()
-Methode schlägt möglicherweise fehl.
Ich sehe zwei Lösungen:
weich: element.data = "http://www.google.com";
hard: Entfernt das Objekt aus der DOM-Struktur und erstellt ein neues mit geändertem Datenattribut.
Der folgende Code funktioniert, wenn Sie Jquery verwenden
$( "object" ).replaceWith('<object data="http://www.google.com"></object>');