Quelle est la différence entre l'auto et de la fenêtre?
J'ai un code JavaScript qui traite de la détection de savoir si la page est en images ou pas. J'ai utilisé le dessus.les frames[] etc. et tout fonctionne bien.
Dans ce script, j'ai remarqué que je peux utiliser la "fenêtre" ou "auto" de façon interchangeable et tout fonctionne toujours. Est "fenêtre" même en tant que "soi", utilisé dans la page HTML?
- Lorsque vous utilisez le Web les Travailleurs de l'auto et de la fenêtre ne sont pas la même chose. Voir [stackoverflow.com/questions/11219775/... [1]: stackoverflow.com/questions/11219775/...
Vous devez vous connecter pour publier un commentaire.
De Javascript: The Definitive Guide:
En bref, les deux
window
etself
sont des références à l'objet de la Fenêtre, qui est l'objet global de javascript côté client.window
etself
doivent être identiques. Quelqu'un sait de toute autre bugs? --------------------------------------- Je dois ajouter que l'utilisation deself
est source de confusion pour la plupart des développeurs javascript, afin de l'utiliserwindow
à la place.self
est un en lecture seule propriété qui peut être plus flexible, et parfois utilisé en faveur de lawindow
directement. C'est parce queself
de référence de l'change selon le contexte de l'entreprise (à la différence dewindow.self
, qui n'existe que siwindow
existe). Il est également grand pour des comparaisons, comme d'autres l'ont mentionné.Par exemple, si vous utilisez
self
à l'intérieur d'un Web Worker (qui vit dans son propre thread d'arrière-plan),self
sera fait référenceWorkerGlobalScope.self
. Toutefois, si vous utilisezself
normale dans un contexte du navigateur,self
va simplement retourner une référence àWindow.self
(celui qui adocument
,addEventListener()
, et tous les autres trucs que vous avez l'habitude de voir).TL;DR tandis que le
.self
danswindow.self
n'existera pas siwindow
n'existe pas, à l'aide deself
sur son propre point deWindow.self
dans un cadre traditionnel de la fenêtre/contexte du navigateur, ouWorkerGlobalScope.self
dans un site web travailleur contexte.Comme d'habitude, MDN a un excellent article sur ce sujet dans le code JavaScript des docs.
:)
Note de côté: L'utilisation de
self
ici ne doit pas être confondue avec la commune de la JS modèle de déclaration d'une variable locale:var self = this
de maintenir une référence à un contexte après la commutation.Vous pouvez lire plus à ce sujet ici: Sortir de Liaison des Situations en JavaScript.
Voici l'explication et exemple de le MDN page pour
window.auto
:Étant donné que personne n'est à l'aide de jeux de cadres de ces jours, je pense que c'est correct de considérer qu'il n'existe pas de cas utiles pour
self
. Aussi, au moins dans Firefox, l'essai contrewindow
au lieu dewindow.self
est équivalent.self
, c'est à dire sans tête d'exécution.self
fonctionnera toujours, maiswindow
ne sera pas.window
etwindow.self
. Si il n'y a pas dewindow
,self
serait disparaissent automatiquement. Je n'ai rien trouvé à propos de la magieself
variable dans node.js. De l'autre côté, PhanomJS émule véritable objet de la fenêtre. Connaissez-vous d'autres non-navigateur environnements où le javascript s'exécute, oùself
est fourni?window === window.self
esttrue
(en FF et Chrome, au moins), pourquoi ne pas simplement utiliserwindow.parent.frames[0] !== window
?window
etself
les deux se réfèrent à l'objet global de la page web actuelle.Pour plus d'infos, jetez un oeil à http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific