Erreur de type JavaScript: invocation illégale

Javascript Type Error



Cet article est reproduit à partir de: http://www.cnblogs.com/meteoric_cry/archive/2011/04/24/2026582.html Auteur: meteoric_cry reproduit, veuillez indiquer la déclaration.

Aujourd'hui, j'ai écrit une page très simple. Pour obtenir un DOM dans la page, j'ai utilisé la notation suivante:

DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
 <head>
 <title> new document title>
 <meta name='generator' content='editplus' />
 <meta name='author' content='' />
 <meta name='keywords' content='' />
 <meta name='description' content='' />
 <meta http-equiv='content-type' content='text/htmlcharset=utf-8' />
 head>
 
 <body>
 <div id='demo'>demodiv>
 <script type='text/ javascript '>
 1: 
 2: var d = document.getElementById
 3: 
 4: var s = d('demo').innerHTML
 5: 
 6: alert(s)
 7: 
scénario>
 body>
html>

Hier, il semble qu'il n'y ait pas de problème, et il n'a aucun problème lors de l'exécution sous IE6 ~ 8, mais il signale une erreur dans d'autres navigateurs et signale une telle erreur:

Uncaught TypeError: invocation illégale Erreur : Appel illégal

À ce moment-là, je n'y ai pas prêté beaucoup d'attention. À ce moment-là, je n'avais pas bien compris ce qui se passait. Ensuite, j'ai envoyé un message sur Weibo et j'ai fait un enregistrement. Quand je suis revenu après avoir mangé, j'ai vu une réponse, qui a été diffusée par taibo, expliquant la raison: lorsque le contexte d'appel / d'application est illégal, cette exception sera levée et IE9 respecte également cette spécification. Voici un exemple qui peut éviter de signaler cette erreur. Je n'y ai pas prêté beaucoup d'attention, puis il a envoyé un arbitre

Appel d'une méthode avec un pointeur de fonction sans '.call' ou '.bind'

Après l'avoir lu, je me suis vraiment détendu. Les mots ci-dessus dans les navigateurs IE9 et non-IE (tels que Chrome) sont comme: