2010-11-26 4 views
25

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

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

  • about:blank
  • javascript:false
  • javascript:void(0)
  • javascript:"";
  • URL на пустую страницу

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

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

+0

возможно дубликат [Iframe Src что-то другое, чем JavaScript: ложный, но тот же эффект] (HTTP: // stackoverflow.com/questions/2503648/iframe-src-something-other-than-javascriptfalse-but-same-effect) – 2010-11-26 10:51:46

+1

Вы можете создать iframe в момент, когда у вас есть доступный src, чтобы избежать этой проблемы. Будет ли это работать? – 2010-11-26 10:52:33

+3

Этот вопрос запрашивал более красивый способ написать «javascript: false». Меня не волнует, насколько уродлива линия, я хочу функциональность. И принятый ответ был URL-адресом пустой страницы, которая платит HTTP-обратную связь, что кажется хуже, чем быть в состоянии избежать этого. – 2010-11-26 10:54:15

ответ

7

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

0

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

Ничего страшного, как в случае «повреждения». Но тогда, действительно ли неправильно использовать iframe сам по себе?

° -

9

Не уверен, что если все браузеры поддерживают «о: пустой», так что я бы просто пойти с вашей собственной пустой странице, то.

Другая идея: Почему бы не добавить весь iframe, используя javascript, а не только src?

+0

+1 Второй абзац звучит как лучшая идея! – 2010-11-26 10:57:28

+1

Для вашего первого ответа, который оплачивает ненужную поездку туда и обратно, что кажется субоптимальным. – 2010-11-26 10:58:31

+0

@Paul, но второй ответ на вопрос, если вы планируете заполнять iframe с помощью js – 2010-11-26 10:59:11

6

Re вашего комментария разъясняющего, что вы планируете использовать IFRAME в качестве цели для отправки формы:

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

Это позволяет избежать

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

Это также допустимый HTML.

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

0

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

Я не понимаю, почему включение триггера в виде формы исключает динамическое создание 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> 
1

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

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

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

2

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 на динамическом Updation с JS

Смежные вопросы