Ne peut pas accéder à cssRules locales fichier css dans google Chrome 64
voici un exemple simple du problème:
<html>
<head>
<link rel='stylesheet' href='myStyle.css'>
<script>
window.onload=function(){
try{
alert(document.styleSheets[0]); //works
alert(document.styleSheets[0].cssRules); //doesn't even print undefined
}catch(e){alert(e)} //catch and alert the error
}
</script>
</head>
<body>
</body>
</html>
myStyle.css body{background-color:green;}
script fonctionne très bien si vous utilisez <style></style>
SOLUTIONS:
1. fonctionne lorsque les fichiers sont en ligne/localhost
2. travaille avec d'autres navigateurs (c'est à dire Internet Explorer, Microsoft a Bord, Firefox)
3. chrome --allow-l'accès de fichier de fichiers
Ce qui ne l'onglet Réseau dans les Outils de Dev dire, est la feuille de style chargé?
la feuille de style est chargé oui.
Ane des messages d'erreur dans la console?
Non interceptée DOMException: impossible de lire le 'cssRules la propriété de "CSSStyleSheet': Ne peut pas les règles d'accès à la fenêtre.onload
Votre navigateur est toujours manquant, je ne peux pas reproduire le problème avec n'importe quel navigateur installé sur ma machine ... même pas dans IE.
la feuille de style est chargé oui.
Ane des messages d'erreur dans la console?
Non interceptée DOMException: impossible de lire le 'cssRules la propriété de "CSSStyleSheet': Ne peut pas les règles d'accès à la fenêtre.onload
Votre navigateur est toujours manquant, je ne peux pas reproduire le problème avec n'importe quel navigateur installé sur ma machine ... même pas dans IE.
OriginalL'auteur Puddle | 2018-02-12
Vous devez vous connecter pour publier un commentaire.
TL;DR: Chrome 64 ans, vous aurez besoin d'utiliser un développement local serveur pour tester les fonctionnalités qui dépendent de la CSS du Modèle Objet.
Accéder à des règles CSS dans une feuille de style chargé à partir du système de fichiers local viole une Cross-Origin Resource sharing (SCRO) politique - mais Chrome ne pas appliquer ce, jusqu'à récemment, et les autres navigateurs ne semblent pas à l'appliquer encore.
Chrome 64.0.3282.0 (publié en janvier 2018, changement complet de la liste) comprend un changement de règles de sécurité pour les feuilles de style. Je ne pouvais pas trouver ce changement dans un changelog moins détaillée que la livraison.
Commettre a4ebe08 dans le Chrome est décrit:
Ce commit est un correctif pour le bug Sécurité: l'incohérence de la SCRO de mise en œuvre concernant les CSS et le lien de l'élément. liés W3C spec décrit en détail où l'utilisation de l'Objet CSS Modèle nécessite d'origine de l'accès.
C'est une réelle sécurité de la contrainte et de la solution que vous avez posté (en ligne/localhost) est probablement le plus typique de la solution de contournement. Pour plus d'informations consultez MDN, Comment avez-vous mis en place un local serveur de test? - il explique pourquoi et comment utiliser un développement local serveur pour éviter la SCRO questions.
Cela dit, il ya encore quelques problèmes ouverts et le débat autour de ce changement.
try/catch
.Les navigateurs de choisir comment gérer cette situation. Le W3C de la SCRO spec obtient sa définition de "l'origine" de l'RFC6454 "Le Web à l'Origine du Concept", qui dit l'origine d'un fichier:// URI est dépendant de l'implémentation.
Voir aussi stackoverflow.com/questions/48313084/...
OriginalL'auteur Brad Buchanan