2010-08-11 6 views
11

Я пытаюсь добавить динамически iframe на веб-страницу с помощью JavaScript. Я хотел бы знать, можно ли установить атрибут src для моего iframe без использования другого html-файла через URL-адрес. Я имею в виду, есть ли способ «подделать» html для файла атрибута src с переменной JS, где я могу установить свой код (который сам JS)? Я бы использовал элемент создания DOM для создания iframe в jQuery.Можно ли «подделать» атрибут src iframe?

Спасибо!

+0

Почему вы хотите раму? Что случилось с использованием div и 'overflow: scroll'? – Quentin

ответ

25

Вы можете посмотреть data:URIs.

<iframe src="data:text/html, .... URLencoded HTML data ...."> 

альтернативно

<iframe src="data:text/html;base64, .... base64 encoded HTML data ...."> 

Схема поддерживается IE> = 8 (MSDN source), Firefox, Safari 3+ и Opera.

Имеет разную длину. Говорят, что Opera отрезала около 4 килобайт; Internet Explorer - 32 килобайта. Firefox не имеет ограничения на длину.

Больше на URI, и инструменты данных для преобразования в Mozilla Developer Central

+0

Большое спасибо, я смотрю на все это прямо сейчас =) – Lucas

+0

Кажется, что мне нужно. Знаете ли вы, есть ли способ создать код, который входит в данные HTML, с помощью элемента или я не знаю, как это сделать, а затем использовать его src? Потому что мой код JavaScript, и на данный момент я не могу сделать это напрямую. Но он попробует еще раз. – Lucas

+0

@Lucas jQuery '.html()' должен предоставить вам содержимое HTML любого элемента. 'encodeURIComponent()' должен правильно закодировать его для использования в первом примере. В JS нет встроенной 'base64()' реализации, но лучше идти с URIencoded способом, так как base64 раздувает код на 33%. –

1

Если вы контролируете iframe полностью на стороне клиента и никогда не должны запрашивать серверные запросы с помощью этого iframe, то упростить стиль div будет выглядеть как iframe (посмотрите на свойство overflow), где вы получите гораздо более простой и более прямой контроль над содержимым DOM этого div.

+0

Я делаю запросы на стороне сервера, поэтому я использую DOM – Lucas

-1

следующий код должен делать то, что вы хотите.

Вы можете оставить атрибут src пустым.

var yourcontent="<div>your stuff</div>"; 
window.frames['frame_name'].document.write=yourcontent; 
+0

Я не могу сделать это после загрузки страницы. – Lucas

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