77 votes

Est-il une différence entre " new Image()` et `document.createElement('img')`?

En javascript, je peux faire:

img1 = new Image();
img2 = document.createElement('img');

ma question est, est-il une différence entre les deux? J'ai lu quelque part qu' Image, Form, et Element est appelé hôte objets, est-ce vrai? Si elle l'est, ce sont des objets hôte?

L'approche qui est préférable?

61voto

Felix Kling Points 247451

Je ne pouvais pas trouver toutes les références détaillées, mais basé sur le commentaire dans le MDC - HTMLImageElement exemple, il semble qu' Image fait partie des DOM niveau 0 alors qu' document.createElement fait partie des DOM niveau 2.

DOM niveau 0 a été inventé par Netscape et a fourni un moyen d'accéder à certains éléments du site. Fondamentalement, tous les navigateurs prennent en charge pour assurer la compatibilité ascendante.
Mais pour être honnête, je ne comprends pas pourquoi l' Image constructeur existe, parce que, aussi loin que j'ai compris, il n'y a aucun moyen de manipuler le document avec le DOM niveau 0. C'était peut-être uniquement utilisées en interne par le navigateur pour créer les objets.

DOM niveau 2 est un standard officiel, développé par le W3C.

Pour plus d'informations sur le DOM niveaux, avoir un coup d'oeil à l' quirksmode.org - Niveau 0 DOM et Wikipedia.


J'ai lu quelque part qu' Image, Form, et Element est appelé hôte objets, est-ce vrai?

Oui.

Si elle l'est, ce sont des objets hôte?

La spécification ECMAScript qui motive les objets hôte de cette façon:

ECMAScript est un langage de programmation orienté objet pour effectuer des calculs et de manipuler des objets de calcul dans un environnement hôte. ECMAScript telle que définie ici n'est pas destiné à être mathématiquement auto-suffisante; en effet, il n'existe pas de dispositions dans la présente spécification pour la saisie des données externes ou de sortie des résultats calculés. Au lieu de cela, il est prévu que le calcul de l'environnement de l'ECMAScript programme fournira non seulement les objets et les autres installations décrites dans ce cahier des charges, mais aussi certaines spécifiques à l'environnement de l'hôte objets, dont la description et le comportement sont au-delà de la portée de cette spécification, sauf pour indiquer qu'ils peuvent fournir certaines propriétés qui peuvent être accessibles et certaines fonctions qui peuvent être appelées à partir d'un ECMAScript programme.

et

objet hôte
objet fourni par l'hôte de l'environnement pour compléter l'environnement d'exécution d'ECMAScript.
REMARQUE Tout objet qui n'est pas natif est un objet hôte.

Si aucun objet n'est pas définie dans la spécification et fournis par l'environnement est un objet hôte. Ce sont par exemple dans un navigateur (parmi d'autres): window, document et console.

10voto

duri Points 8246

Les deux lignes sont équivalentes et à la fois de créer HTMLImageElement objet. La seule différence est dans le document XML avec un mélange d'espaces de noms - new Image() retourne toujours <img> d'élément avec l'espace de noms XHTML, document.createElement('img') n'est pas toujours le faire.

4voto

mcgrailm Points 9453

Personnellement, je tiendrais à createElement parce qu'alors ce n'est pas un cas particulier d'une image, tout est fait de la même manière qu'ils sont identiques, j'ai aussi remarqué que jquery utilisation appendChild(node) méthode pour tout et je ne suis pas sûr de la différence entre cela et l'une des deux méthodes dans vos questions, mais jquery est le travail de la croix-navigateur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X