Wie funktioniert die YouTube-Einbettung ohne eine classid im Objekt-Tag?

9

Ein typisches Codefragment aus der YouTube-Einbettungsfunktion sieht folgendermaßen aus:

%Vor%

Nun hat das Element <embed> ein type-Attribut, um dem Browser mitzuteilen, dass es eine Flash-Datei einbettet. Für Browser, die das <object> -Tag verwenden, scheint jedoch keine Information für den Browser verfügbar zu sein!

Warum wird hier kein Attribut classid oder codebase benötigt? Die einzigen Möglichkeiten, die ich mir vorstellen kann, sind:

  • IE nimmt Flash-Einbettung in Ermangelung anderer Informationen an
  • oder, IE liest diese Informationen aus dem <embed> -Tag

Ich kann keine Dokumentation finden, um beide Optionen zu überprüfen. Und ich bin neugierig!

EDIT: fand einen tollen Vergleich von Flash Einbettungstechniken hier . Ich will immer noch wissen wie es funktioniert ...

    
Paul Dixon 23.08.2010, 10:29
quelle

2 Antworten

5

Ich habe ein wenig experimentiert und festgestellt, dass das Einfügen des Videos <embed> dazu führt, dass IE das Video nicht einbetten kann. Ich war überrascht, dass IE das Embed-Tag verwendete, also vertiefte ich mich tiefer. Wenn Sie nur die Antwort wissen möchten, scrollen Sie am Ende die Zusammenfassung herunter!

Die einfachste Sache, die in IE8 funktioniert ist:

%Vor%

Es gibt kein Typattribut, daher muss der Browser den MIME-Typ des src-Attributs prüfen, um herauszufinden, was zu tun ist. Ich habe dies verifiziert, indem ich eine Flash-Datei mit einem anderen MIME-Typ bereitgestellt habe - sie würde nur abgespielt werden, wenn ich ein Typattribut von application / x-shockwave-flash angegeben hätte (dieses Verhalten ist für IE hier )

Wenn ein <object> -Tag die classid enthält, wird natürlich <embed> ignoriert, was Sie erwarten würden. Ich habe dies verifiziert, indem ich das Embed-Tag auf ein anderes Video verweisen lasse

%Vor%

Wenn das Objekt-Tag verwendet wird, kümmert sich das Flash-Plugin nicht um den MIME-Typ des Films. Auch dies wurde überprüft, indem eine gültige SWF-Datei mit einem anderen MIME-Typ bereitgestellt wurde.

Entfernen Sie die Classid aus dem letzten Test, und Sie erhalten das alternative Video im <embed> -Tag. Das bringt mich dazu, mich zu wundern, warum es überhaupt <param> -Tags gibt, wenn sie nur in einer YouTube-Stil-Einbettung ignoriert werden.

Zusammenfassung

Wenn es kein classid -Attribut in <object> gibt (oder eine andere Art, das erforderliche Plugin zu bestimmen, wie ein Datenattribut), gibt der IE alles wieder, was er im Objekt-Tag finden kann. co_de% tag (IE nennt dies Objekt-Fallback ). Wenn dieses Tag kein <embed> -Attribut enthält, wird der MIME-Typ von type verwendet, um das richtige zu verwendende Plugin zu bestimmen.

    
Paul Dixon 23.08.2010, 11:07
quelle
0

Es ist der MIME-Typ. Dies wird vom Server gesendet, um dem Browser zu helfen, den Inhaltstyp zu identifizieren. MIME-Typen sind Helper-Plugins zugeordnet.

    
Delan Azabani 23.08.2010 11:09
quelle

Tags und Links