Heim  >  Artikel  >  Web-Frontend  >  Warum kann ich in Chrome 64 nicht über eine lokale Datei auf CSS-Regeln zugreifen?

Warum kann ich in Chrome 64 nicht über eine lokale Datei auf CSS-Regeln zugreifen?

DDD
DDDOriginal
2024-11-02 17:31:29885Durchsuche

Why Can't I Access CSS Rules from a Local File in Chrome 64?

Kann in Chrome 64 nicht auf CSS-Regeln aus einer lokalen CSS-Datei zugreifen

Kürzlich sind Webentwickler auf ein Problem gestoßen, bei dem der Zugriff auf CSS-Regeln aus einer lokalen CSS-Datei nicht möglich ist Chrome-Version 64. Dieses Problem kann auf im Browser implementierte Sicherheitsänderungen zurückgeführt werden.

Das Problem

In der Vergangenheit ermöglichte Chrome Entwicklern den Zugriff auf CSS-Regeln aus lokalen Dateien. Mit Version 64 wurde diese Funktionalität jedoch eingeschränkt. Beim Versuch, auf die cssRules-Eigenschaft eines Stylesheets zuzugreifen, stoßen Entwickler auf eine undefinierte Antwort oder einen Fehler.

<code class="html"><script>
window.onload = function() {
  try {
    alert(document.styleSheets[0]); // works
    alert(document.styleSheets[0].cssRules); // undefined
  } catch (e) {
    alert(e); // error
  }
}
</script>

<link rel='stylesheet' href='myStyle.css'>

<!-- myStyle.css -->
body {
  background-color: green;
}</code>

Lösungen

Um dieses Problem zu beheben, haben Entwickler mehrere Problemumgehungen identifiziert:

  1. Stellen Sie die Dateien online oder von localhost bereit: Durch das Hosten der HTML- und CSS-Dateien auf einem Server oder die Verwendung von localhost wird die CORS-Richtlinie nicht durchgesetzt und es kann auf CSS-Regeln zugegriffen werden.
  2. Andere Browser verwenden: Andere Browser wie Internet Explorer, Microsoft Edge und Firefox erzwingen derzeit nicht dieselbe CORS-Einschränkung.
  3. Befehlszeilenoption: Chrome bietet eine Befehlszeilenoption –allow-file-access-from-files, die den Zugriff auf CSS-Regeln aus lokalen Dateien ermöglicht. Diese Option sollte mit Vorsicht verwendet werden.

Erklärung

Die Hauptursache für dieses Problem liegt in einer Änderung der Sicherheitsregeln von Chrome. Chrome hält sich jetzt an die CORS-Richtlinie (Cross-Origin Resource Sharing), die den Zugriff auf Ressourcen unterschiedlicher Herkunft einschränkt. Da lokale Dateien einen anderen Ursprung haben als die HTML-Datei, verstößt der Zugriff auf CSS-Regeln aus diesen Dateien gegen die CORS-Richtlinie.

Offene Probleme

Während die Implementierung der CORS-Richtlinie in Chrome die Sicherheit verbessert, erhöht sie die Sicherheit hat auch einige offene Probleme verursacht:

  • Die einzige Möglichkeit, festzustellen, ob ein Stylesheet von JavaScript aus nicht zugänglich ist, ist durch einen Try/Catch-Block.
  • Möglicherweise liegt ein Implementierungsproblem in Chrome vor Dadurch werden bestimmte Problemumgehungen zunichte gemacht.
  • Die CSS-Objektmodellspezifikation befindet sich noch im Status „Arbeitsentwurf“, sodass Raum für zukünftige Änderungen bleibt.

Das obige ist der detaillierte Inhalt vonWarum kann ich in Chrome 64 nicht über eine lokale Datei auf CSS-Regeln zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn