En bref: j'essaie de comprendre la signification de ce TypeError: Échec de l'exécution de 'getComputedStyle' sur 'Window': le paramètre 1 n'est pas de type 'Element' L'erreur apparaît lors du déjeuner VisualEditor de Mediawiki, comme on peut le voir ici:
http://www.wiki.org.il/index.php?title=new-page&veaction=edit
L'erreur ne permet pas de créer de nouvelles pages ou de modifier le wiki de manière anonyme. Cependant, avec l'utilisation d'un skin différent, l'erreur disparaît:
http://www.wiki.org.il/index.php/Main_Page?useskin=vector
Le wiki fonctionne sur 1.25alpha.
J'ai eu cette même erreur en montrant. Lorsque j'ai remplacé le sélecteur jQuery par du JavaScript normal, l'erreur a été corrigée.
var this_id = $(this).attr('id');
Remplacer:
getComputedStyle( $('#'+this_id)[0], "")
Avec:
getComputedStyle( document.getElementById(this_id), "")
Je l'ai eu dans AngularJS v1.5.8 en essayant de ng-include
une type="text/ng-template"
qui n'existait pas.
<div ng-include="tab.content">...</div>
Assurez-vous que lorsque vous utilisez ng-include, les données de cette directive pointent vers une page/section réelle. Sinon, vous vouliez probablement:
<div>{{tab.content}}</div>
Dans mon cas, j'utilisais ClassName
.
getComputedStyle( document.getElementsByClassName(this_id)) //error
Cela fonctionnera également sans 2ème argument " "
.
Voici mon code de course complet:
function changeFontSize(target) {
var minmax = document.getElementById("minmax");
var computedStyle = window.getComputedStyle
? getComputedStyle(minmax) // Standards
: minmax.currentStyle; // Old IE
var fontSize;
if (computedStyle) { // This will be true on nearly all browsers
fontSize = parseFloat(computedStyle && computedStyle.fontSize);
if (target == "sizePlus") {
if(fontSize<20){
fontSize += 5;
}
} else if (target == "sizeMinus") {
if(fontSize>15){
fontSize -= 5;
}
}
minmax.style.fontSize = fontSize + "px";
}
}
onclick= "changeFontSize(this.id)"
Le message d'erreur indique que getComputedStyle
requiert que le paramètre soit de type Element
. Vous le recevez car le paramètre a un type incorrect.
Le cas le plus courant est que vous essayez de passer un élément qui n'existe pas comme argument:
my_element = document.querySelector(#non_existing_id);
Maintenant que cet élément est null
, cela entraînera l'erreur mentionnée:
my_style = window.getComputedStyle(my_element);
S'il n'est pas possible d'obtenir toujours correctement l'élément, vous pouvez, par exemple, utiliser la commande suivante pour terminer la fonction si querySelector
n'a trouvé aucune correspondance:
if (my_element === null) return;
J'ai eu la même erreur sur mon projet Angular6. aucune de ces solutions ne semblait fonctionner pour moi. s'est avéré que le problème était dû à un élément spécifié comme dropdown
mais qu'il n'avait pas d'options de liste déroulante. jetez un œil au code ci-dessous:
<span class="nav-link" id="navbarDropdownMenuLink" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="material-icons "
style="font-size: 2rem">notifications</i>
<span class="notification"></span>
<p>
<span class="d-lg-none d-md-block">Some Actions</span>
</p>
</span>
<div class="dropdown-menu dropdown-menu-left"
*ngIf="global.localStorageItem('isInSadHich')"
aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">You have 5 new tasks</a>
<a class="dropdown-item" href="#">You're now friend with Andrew</a>
<a class="dropdown-item" href="#">Another Notification</a>
<a class="dropdown-item" href="#">Another One</a>
</div>
suppression du code data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
résolu le problème.
Je pense moi-même qu'à chaque clic sur le premier élément span, la portée devrait définir le style pour les enfants déroulants qui n'existaient pas dans la plage parent, donc cela a jeté une erreur.