iframe без атрибута src - PullRequest
       8

iframe без атрибута src

25 голосов
/ 26 ноября 2010

Я хотел бы создать <iframe> на странице, но затем добавить src позже.Если я создаю iframe без атрибута src, он загружает текущую страницу в некоторых браузерах.Какое правильное значение нужно установить для src, чтобы он просто загружал пустой фрейм?

Ответы, которые я видел:

  • about:blank
  • javascript:false
  • javascript:void(0)
  • javascript:"";
  • URL-адрес пустой страницы

Есть ли явный победитель?Если нет, то каковы компромиссы?

Я бы хотел, чтобы во всех браузерах начиная с IE6 и далее не было предупреждений о смешанном содержании для URL-адресов HTTPS, а также каких-либо кнопок, истории или перезагрузки.

Ответы [ 9 ]

10 голосов
/ 26 ноября 2010

Не уверен, что все браузеры поддерживают "about: blank", поэтому я бы просто выбрал вашу собственную пустую страницу.

Еще одна идея: почему бы не добавить весь iframe, используя javascript вместо src?

7 голосов
/ 26 ноября 2010

Стандартный подход при создании «пустого» iframe (например, в качестве прокладки iframe) - установить src как javascript:false;. Этот метод используется большинством библиотек JavaScript, которые создают для вас прокладки iframe (например, наложение YUI).

6 голосов
/ 26 ноября 2010

Ваш комментарий уточняет, что вы планируете использовать iframe в качестве цели для отправки формы:

Я бы использовал пустой документ на сервере, который отправляет обратно 204 no content.

избегает

  • предупреждения о «смешанном контенте» в режимах IE и HTTPS
  • Ненужные ошибки, потому что клиент не понимает протокол javascript:
  • и другие экзотические махинации.

Это также действительный HTML.

Так что, если он генерирует дополнительный запрос? Установите правильные заголовки кэширования, и для каждого клиента будет только один запрос.

5 голосов
/ 26 ноября 2010

А как же

about:blank
2 голосов
/ 21 августа 2013

javascript:false:
IE10 и FF (проверено в v23 в Linux) покажут «false» в качестве содержимого.

javascript:void(0) && javascript:;:
IE покажет ошибку «не может отобразить веб-страницу» в iframe.Кроме того, при установке src с действительного URL-адреса на javascript:void(0) страница не станет пустой.

about:blank:
Работает во всех браузерах, но IE 9 отправляет запрос на сервер с путем "null".Все еще лучшая ставка IMO

Оформление заказа http://jsfiddle.net/eybDj/1
Оформление заказа http://jsfiddle.net/sv_in/gRU3V/, чтобы увидеть, как iframe src изменяется при динамическом обновлении с JS

1 голос
/ 11 января 2012

Как я уже писал в этом вопросе: Является ли пустой iframe src действительным? , выглядит приемлемым просто полностью исключить атрибут src=.

1 голос
/ 04 сентября 2011

javascript:false работает в современных браузерах.

То, что я видел, это то, что это «не получается», когда тупые пауки пытаются загрузить javascript:false как страницу.

Решение: Заблокируйте немых пауков.

0 голосов
/ 03 марта 2011

Да, я знаю, что возрождаю старую ветку. Подай в суд на меня. Я заинтересован в ответе.

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

<html>
<head>
<script type="text/javascript">
function setIFrame(elemName, target, width, height) {
    document.getElementById(elemName).innerHTML="<iframe width="+width+" height="+height+" src='"+target+"'></iframe>";
}
</script>
</head>
<body>
<div id="iframe" style="width:400px; height:200px"></div>
<form onSubmit="setIFrame('iframe', 'http://www.google.com', 400, 200); return false;">
<input type="submit" value="Set IFrame"/>
</form>
</body>
</html>
0 голосов
/ 26 ноября 2010

IMO: если вы не установите src, ваша страница не будет проверена.Но об этом.Если вы введете src = "", ваш сервер будет регистрировать много 404 ошибок.

Ничего действительно плохого, как в "повреждении".Но разве не неправильно использовать iframe сам по себе?

° -

...