2010-09-04 17 views
8

Gibt es eine Möglichkeit, alle CSS-Regeln zu löschen, nachdem die Stylesheets bereits geladen wurden?Alle CSS-Regeln entfernen

Ich muss eine proprietäre JavaScript-Bibliothek verwenden (ESRI's ArcGIS Server API), die auf Dojo aufgebaut ist. Ich nutze Dojos Widgets ausgiebig und möchte Dojos claro-Thema verwenden, aber unglücklicherweise erstellt die ESRI-Bibliothek CSS, indem sie in externe CSS-Dateien lädt (und wahrscheinlich CSS-Regeln, die im JS fest programmiert sind). Dies führt dazu, dass das Claro-Thema fehlt.

So viele Dojo-Widget CSS-Klassen erhalten neu geschrieben und neue Regeln bekommen erstellt, die nur alle CSS Auswischen und Neuladen der Standard-Dojo Sheets einfacher/sicherer scheint.

etwas wie das folgende wäre schön:

* {none} 

aber ich denke, ich muss Sie entweder Dojo oder jQuery am Ende mit, dies zu erreichen.

Antwort

4

Kontrolle dieses Bookmarklet out genannt RefreshCSS durch Paul Irish:

javascript:(function(){var h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++){f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href){var g=f.href.replace(/(&|%5C?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new Date().valueOf())}}})() 

Es aktualisiert die CSS-Stylesheets auf einer Seite, ohne die Seite selbst zu aktualisieren.

Ich denke, Sie könnten einige Änderungen daran vornehmen und es tun, was Sie wollen?

Ein weiterer Ansatz jQuery verwenden, die dies ausführen könnte funktionieren, wenn die Seite geladen wurde:

$('head link, head style').remove();

+0

Ich weiß nicht warum, aber in Ihrem Code sind einige maskierte Zeichen wie < und &. Hier ist der (hoffentlich richtig formatierte) Code: 'javascript: (function() {var h, a, f; a = document.getElementsByTagName ('link'); für (h = 0; h Philipp

0

Es document.head.innerHTML = ""; ist immer Aber es reinigt wirklich alle Skripte Haus so haben Sie weg zu speichern, Metatags, Titel oder was auch immer Sie speichern möchten und fügen Sie sie wieder hinzu.