NEWS
[gelöst] HTML in VIS ändert Aussehen/Inhalt Editor
-
Hallo, bei mir ändert sich teilweise der VIS-Editor (Abstände, Spracht, Inhalt), wenn ich ein HTML-Feld einfüge und dort Code programmiere. Wie kann man das umgehen? Ist das normal?

dann hast du wahrscheinlich auch css-anweisungen hinzugefügt.
CSS wirkt immer auf das komplette html dokument, auch wenn es nur in einem html-widget eingetragen wurdedu musst deine css anweisungen kapseln, so das sie tatsäclich nur die elemente im widget betreffen.
dazu zeigst du am besten mal deinen code
-
dann hast du wahrscheinlich auch css-anweisungen hinzugefügt.
CSS wirkt immer auf das komplette html dokument, auch wenn es nur in einem html-widget eingetragen wurdedu musst deine css anweisungen kapseln, so das sie tatsäclich nur die elemente im widget betreffen.
dazu zeigst du am besten mal deinen code
@oliverio Das wäre beispielsweise folgender Code:
<!DOCTYPE html> <html> <head> <title>Tagesschau.de - Alle Meldungen</title> </head> <body> <h1>Tagesschau.de - Alle Meldungen</h1> <ul> <script> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var xmlDoc = this.responseXML; var items = xmlDoc.getElementsByTagName("item"); // Umgekehrte Schleife, um Artikel von neu nach alt zu sortieren for (var i = items.length - 1; i >= 0; i--) { var title = items[i].getElementsByTagName("title")[0].textContent; var link = items[i].getElementsByTagName("link")[0].textContent; var pubDate = items[i].getElementsByTagName("pubDate")[0].textContent; var listItem = document.createElement("li"); var linkElement = document.createElement("a"); linkElement.href = link; linkElement.textContent = title; listItem.appendChild(linkElement); listItem.innerHTML += " - " + pubDate; document.querySelector("ul").appendChild(listItem); } } }; xhttp.open("GET", "https://www.tagesschau.de/infoservices/alle-meldungen-100~rss2.xml", true); xhttp.send(); </script> </ul> </body> </html> -
dann hast du wahrscheinlich auch css-anweisungen hinzugefügt.
CSS wirkt immer auf das komplette html dokument, auch wenn es nur in einem html-widget eingetragen wurdedu musst deine css anweisungen kapseln, so das sie tatsäclich nur die elemente im widget betreffen.
dazu zeigst du am besten mal deinen code
@oliverio Hab dann nicht mehr weiterprogrammiert. Eigentlich wollte ich mir mit dem HTML die Inhalte des RSS Feeds Tagesschau ziehen. Der RSS Adapter funktioniert bei mir nämlich irgendwie nicht so gut. Die Widgets werden nur angezeigt, wenn ich den ioBroker neu starte und dann ist der VIS-Editor auf einmal auf Englisch bzw. es ist gar keine Sprachwahl mehr möglich.
-
@oliverio Das wäre beispielsweise folgender Code:
<!DOCTYPE html> <html> <head> <title>Tagesschau.de - Alle Meldungen</title> </head> <body> <h1>Tagesschau.de - Alle Meldungen</h1> <ul> <script> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var xmlDoc = this.responseXML; var items = xmlDoc.getElementsByTagName("item"); // Umgekehrte Schleife, um Artikel von neu nach alt zu sortieren for (var i = items.length - 1; i >= 0; i--) { var title = items[i].getElementsByTagName("title")[0].textContent; var link = items[i].getElementsByTagName("link")[0].textContent; var pubDate = items[i].getElementsByTagName("pubDate")[0].textContent; var listItem = document.createElement("li"); var linkElement = document.createElement("a"); linkElement.href = link; linkElement.textContent = title; listItem.appendChild(linkElement); listItem.innerHTML += " - " + pubDate; document.querySelector("ul").appendChild(listItem); } } }; xhttp.open("GET", "https://www.tagesschau.de/infoservices/alle-meldungen-100~rss2.xml", true); xhttp.send(); </script> </ul> </body> </html>Ich sehe 2.Punkte
1)
Das hinzufügen des html-Tags innerhalb eines html Tags ist nicht zulässig.
Deine. Vorlage war gedacht als eigenständige Seite zu funktionieren.
Trage in das html Widget nur den Code zwischen den Body Tags hinzu.Der Befehl in Zeile 28
document.querySelector("ul")
Sucht den ersten Tag ul im Dokument und fügt dort dann alle gefundenen rss Inhalte hinzu
Wenn im gesamten Dokument genau nur ein ul zu finden ist, passt das.
In vis sind aber wahrscheinlich ganz viele ul vorhanden.
Also werden die Elemente halt beim ersten gefundenen hinzugefügt.Ich würde dem ul Tag ein class Attribut mit einem eindeutigen Namen
<ul class=„myul“></ul>hinzufügen und die Zeile 28 dann mit dem Befehl tauschen
document.querySelector(".myul").appendChild(listItem);Außerdem würde ich den Script Anteil aus dem ul element heraus verschieben.
Die Anführungsstriche sind natürlich immer die gleichen, also oben. Das iPad macht mir hier aber immer die lexikalischen, also erst unten und dann oben.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden