/ / разлика между елементите iframe, embed и object - html5, iframe

разликата между елементите iframe, embed и обекта - html5, iframe

HTML5 дефинира няколко вградени елемента на съдържание, които от птичи поглед изглеждат много сходни с това, че са до голяма степен идентични.

Каква е действителната разлика между iframe, embed и object?

Ако искам да вградя HTML файл от сайт на трета страна, кой от тези елементи бих могъл да използвам и как биха се различавали?

Отговори:

93 за отговор № 1

Елементът iframe представлява вложен контекст на сърфиране. HTML 5 стандарт - „The <iframe> елемент "

Използва се предимно за включване на ресурси от други домейни или поддомейни, но може да се използва и за включване на съдържание от същия домейн. Най- <iframe>Силата е, че вграденият код е "на живо" и може да комуникира с родителския документ.

<embed>

Стандартизиран в HTML 5, преди това беше нестандартен маркер, който, разбира се, беше реализиран от всички основни браузъри. Поведението преди HTML 5 може да варира ...

Вграденият елемент осигурява точка за интегриране на външно (обикновено не-HTML) приложение или интерактивно съдържание. (HTML 5 стандарт - „The <embed> елемент ")

Използва се за вграждане на съдържание за плъгини на браузъра. Изключения от това са SVG и HTML, които се обработват по различен начин според стандарта.

Подробностите за това, което може и какво не може да се направи с вграденото съдържание, зависи от въпросната приставка за браузър. Но за SVG можете да получите достъп до вградения SVG документ от родителя с нещо като:

svg = document.getElementById("parent_id").getSVGDocument();

От вътре вграден SVG или HTML документ можете да достигнете до родителя с:

parent = window.parent.document;

За вградения HTML няма начин да влезете в вградения документ от родителя (който съм намерил).

<object>

Най- <object> елемент може да представлява външен ресурс,които, в зависимост от вида на ресурса, или ще бъдат третирани като изображение, като вложен контекст на сърфиране, или като външен ресурс, който ще се обработва с плъгин. (HTML 5 стандарт - „The <object> елемент ")

заключение

Освен ако не вграждате SVG или нещо статично, вероятно най-добре използвате <iframe>, За да включите SVG употреба <embed> (ако си спомням правилно <object> спечели "не ти позволявам сценарий †) Честно казано не знам защо бихте използвали <object> освен ако не са по-стари браузъри или флаш (с които не работя).

† Както беше посочено в коментарите по-долу; скриптове в <object> ще работи, но родителският и детският контексти не могат да комуникират директно <embed> можете да получите контекста на детето от родителя и обратно. Това означава, че можете да използвате скриптове в родителя, за да манипулирате детето и т.н. Тази част не е възможна <object> или <iframe> където вместо това ще трябва да настроите някакъв друг механизъм, като например API на postMessage на JavaScript.


16 за отговор № 2

Една от причините за използване object над iframe е, че обектът преразмерва вграденото съдържание, за да отговаря на размерите на обекта. най-забележими сафари в iPhone 4s, където е ширината на екрана 320px и html от вградения URL може да зададе размери по-големи.


0 за отговор № 3

Друга причина за използване object над iframe е това object под ресурси (когато an <object> изпълнява HTTP искания) се считат за passive/display от гледна точка на Mixed content, което означава, че е по-сигурно, когато трябва да имате Mixed content.

Смесено съдържание означава, че когато имате https но вашият ресурс е от http.

справка: https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content