Действительно ли IFrames (HTML) являются устаревшими? [закрытый]

Добавляя к предыдущему ответу, я просто хотел очистить предполагаемую путаницу с указателем на функцию и функцией.

void heapify(S bt[], unsigned els, bool(*shouldBeBefore)(const S & a, const S & b));

int main() {
    [...]
    heapify(x, 9, shouldBeBefore(test[0], test[1]));
    [...]
}

bool shouldBeBefore(const S & a, const S & b) {
    return a.x < b.x;
}

shouldBeBefore называет функцию, а также аргумент функции. Это добавляет некоторую путаницу. heapify фактически разрешено принимать любую функцию с сигнатурой bool(const S&, const S&), и название должно указывать на это.

Для указателей на функции всегда удобно добавить определение типа

using Comparator = bool(*)(const S&, const S&);
// typedef bool(*Comparator)(const S&, const S&); // or by typedef

Код будет выглядеть как

void heapify(S bt[], unsigned els, Comparator comparator);

int main() {
    [...]
    heapify(x, 9, shouldBeBefore(test[0], test[1]));
    [...]
}

bool shouldBeBefore(const S & a, const S & b) {
    return a.x < b.x;
}

, и вы будете вызывать компаратор, как если бы любая другая функция.

Определение указателя на функцию является многословным. Вы также можете использовать std :: function, что немного упрощает синтаксис

using Comparator = std::function<bool(const S&, const S&>>;

Преимущество состоит в том, что вы можете вызывать heapify с любым вызываемым.

85
задан casperOne 24 October 2011 в 22:34
поделиться

10 ответов

По моему мнению , W3C бросил оружие в отбрасывании фреймов из доктрин Strict HTML и XHTML. Теоретически вы бы использовали элемент для добавления посторонних объектов в ваш документ, но различия и ограничения браузера сделали это незапланированным для многих разработчиков. С гораздо более прагматичным HTML 5 (который все еще является черновиком), iframes вернулись и даже имеют два новых атрибута: seamless и интригующую песочницу .

51
ответ дан 24 November 2019 в 08:12
поделиться

В моей предыдущей компании мы предоставили размещаемое приложение, которое клиенты могли бы интегрировать в свои собственные веб-сайты. Иногда для этого они использовали бы IFrame, вписывая нашу размещенную страницу в свои существующие дизайны. Иногда это даже было сделано незаметно (т.е. IFrame не имел границ или полос прокрутки, он просто выглядел как часть страницы). Я считаю, что это хорошее использование тега.

5
ответ дан 24 November 2019 в 08:12
поделиться

Я только что изменил сайт с обычного Frameset на Iframes, так как обычные кадры не могли делать то, что мне было нужно. Это не вызвало проблем с остальной базой кода.

2
ответ дан 24 November 2019 в 08:12
поделиться

IFrames часто используются с AJAX. GMail, например, использует девять скрытых IFrames, я верю.

7
ответ дан 24 November 2019 в 08:12
поделиться

Они могут быть чрезвычайно полезным в некоторых обстоятельствах, но они ограничены. В частности, встраивание общей функциональности на несколько сайтов.

Например, у меня есть клиент, который управляет несколькими сайтами электронной коммерции в Шотландии. В рамках этого мы разработали пару простых приложений для поиска возможных названий кланов по вашей фамилии или по вашему выбору тартанов (хихикайте, если хотите, но тартаны приносят нашей экономике 700 миллионов долларов в год). База данных за этим удивительно велика (почти десять тысяч строк в таблицах основных имен и тартанов) и довольно регулярно обновляется.

Итак, у нас есть приложения, настроенные для запуска на одном веб-сайте, а затем встроенные в другие наши веб-сайты с использованием iframe, позволяющий простую передачу параметров javascript, чтобы мы могли интегрировать выбор тартана или клана с функциональностью на сайте встраивания. Для iframe установлено значение noborder, поэтому конечному пользователю он кажется совершенно незаметным.

Конечно, для этого есть другие способы, но использование iframe простое и надежное. И это, конечно, не устарело.

включив простую передачу параметров javascript, мы можем интегрировать выбор тартана или клана с функциональностью на сайте встраивания. Для iframe установлено значение noborder, поэтому конечному пользователю он кажется совершенно незаметным.

Конечно, для этого есть другие способы, но использование iframe простое и надежное. И это, конечно, не устарело.

включив простую передачу параметров javascript, мы можем интегрировать выбор тартана или клана с функциональностью на сайте встраивания. Для iframe установлено значение noborder, поэтому конечному пользователю он кажется совершенно незаметным.

Конечно, для этого есть другие способы, но использование iframe простое и надежное. И это, конечно, не устарело.

5
ответ дан 24 November 2019 в 08:12
поделиться

IFrames не устарели, но причины для их использования редки.

Причины использования iframe:

  • Он отлично подходит для ограждения чужих вещей из других доменов, но не интегрируется плавно . (таблицы стилей, javascript и т. д.)
  • Интегрировать мультимедиа иногда проще с помощью iframe, чем с помощью тега embed.
  • На самом деле, действительно специализированные случаи, такие как случай с gmail, когда они используют его для управления звуками и историей.

Я бы также ответил, что нет необходимости удалять фреймы, это необходимый тег, и он будет использоваться некоторое время.

23
ответ дан 24 November 2019 в 08:12
поделиться

Фреймы устарели для макета страницы. Никогда не используйте их вместо хорошего макета CSS, даже макет на основе таблицы лучше.

Причины использования iframe:

  • ads : например, adwords использует эту технику, она удобна для инкапсуляции - ad css не разрушит вашу страницу.
  • скрытый iframe : it может использоваться для сотен полезных вещей, таких как отслеживание, альтернатива ajax и т. д.
24
ответ дан 24 November 2019 в 08:12
поделиться

Поддержка