Wie lade ich css-Regeln dynamisch in Webkit (Safari/Chrome)?
Ich habe momentan Probleme in Webkit(Safari und Chrome), habe ich das versuchen zu laden dynamisch (innerHTML) einige html-Code in ein div-Element, das html enthält css-Regeln (...), nachdem das html gerendert wird die style-Definitionen werden nicht geladen (also optisch kann ich sagen, die styles sind nicht mehr da und auch wenn ich die Suche mit javascript für Sie keine styles).
Ich habe versucht, mit einer jquery-plugin tocssRule(), es funktioniert, aber es ist einfach zu langsam. Gibt es einen anderen Weg, um webkit zu laden, die Stile dynamisch?
Danke.
Patrick
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es ist eine bessere Praxis zum Anhängen eines "link" - tag, um den Kopf des Dokuments. Wenn dies nicht möglich ist, versuchen zum Anhängen einer "Stil" - tag auf den Kopf. Style-tags sollten nicht in den Körper (nicht selbst überprüfen).
Append link-tag:
Append style-tag:
Straight-up jQuery-Weg (funktioniert auf gängigen Browsern, einschließlich Chrome): http://topsecretproject.finitestatemachine.com/2009/09/how-to-load-javascript-and-css-dynamically-with-jquery/
Aus der Website:
Hinweis: das Beispiel enthält außerdem die Injektion von JS, die ignoriert werden können, wenn Sie nur wollen, um zu injizieren, eine CSS-Referenz.
einfachste Weg (mit Hilfe von jQuery ist), ist die folgende:
Wenn du es genau so machen, dann funktioniert es in Safari. Wenn Sie es tun, die normalen jQuery-Weg (alle in einem text-string) wird es nicht (die css wird nicht geladen).
Dann sind Sie einfach nur hängen Sie auf den Kopf mit $('Kopf').append(cssLink);
Dank Vatos, du hast mich gut führen, im Grunde Tat ich das, was Sie vorgeschlagen, aber verwendet jquery, um den html und fügen Sie den neuen Stil auf den Kopf, da safari/chrome blockieren würde, wenn dabei innerHTML und document.Kopf wurde nicht definiert. Mein code endete wie folgt suchen
meh. Ich habe nicht genug Punkte zu Stimmen, bis Andrei Cimpoca das Ergebnis, aber diese Lösung ist der beste hier.
Stil.innerHTML = "..."; funktioniert nicht in webkit-Motoren oder ie.
Richtig zu injizieren css-text, müssen Sie:
Stil.styleSheet.cssText = "..."; für den ie.
und
Stil.appendChild(document.createTextNode("...")); für webkit.
Firefox funktionieren auch mit der zweiten option, oder mit Stil.innerHTML = "...";
Hier ist der gig. Was Patrick gesagt hat nicht funktioniert für mich. Hier ist, wie ich es Tat.
InnerHTML ist veraltet und sollte nicht verwendet werden, für so eine Sache. Darüber hinaus ist es langsamer zu.
Neben dem style-tag basierten Versionen vor, können Sie auch Formatierungen mithilfe von javascript direkt:
Dies hat den Vorteil, dass Sie Variablen verwenden, die zimmerreserviereung, ohne das resort zu cssText/innerHTML.
Beachten Sie, dass auf webkit-basierte Browser, die diese langsam, wenn Sie das einfügen einer Menge von Regeln. Es gibt einen bug öffnen Sie zum beheben dieses performance-Problem in webkit (https://bugs.webkit.org/show_bug.cgi?id=36303). Bis dahin können Sie mit style-tags für bulk-inserts.
Dies ist der W3C-standard-Möglichkeit zum einfügen von Stilregeln, aber es ist nicht unterstützt von jeder version des IE: http://www.quirksmode.org/dom/w3c_css.html
document.querySelector('#x').style.sheet
ist nicht definiert.Ich weiß, es ist ein älteres Thema, aber dachte, jemand würde profitieren. Auch ich brauchte zum laden von css dynamisch in meine Seite (vorher alles gerendert onload, nach enthalten "Komponente" - Vorlagen):
Versuchte ich anfügen zu dokumentieren.Kopf mit einer one-line-Ansatz -- er arbeitete in IE 10 und Chrome, aber nicht in Safari. Der Ansatz oben gearbeitet in allen 3.