Изменение содержимого IFrame src

Я не верю, что это можно сделать, но возможно ли изменить содержимое iframe, отображаемого через src.

Сторонний скомпилированный элемент управления ASP.Net (версия Telerik RadEditor .Net 2), который я использую, имеет iframe в части отображаемого кода и не содержит тип документа, что вызывает проблемы в IE8 с некоторыми элементами.

Так как он скомпилирован, я не могу его добавить в исходники. Мне было интересно, можно ли добавить его другим способом?

Я пробовал несколько вещей в jquery, таких как:

$(element).html().prepend("doc type here");

$(element).html("doctype here" + $(element).html()); 

и всякие другие виды изворотливой работы.


person Cyassin    schedule 28.05.2014    source источник
comment
почему вы не используете пользовательский фильтр содержимого. У вас есть возможность получить/установить значение radeditor.   -  person Milind Anantwar    schedule 28.05.2014
comment
Я попытался посмотреть на фильтр пользовательского содержимого. Но я не понял, как в него внедрить docType. Не похоже, что он выполняет задачу, в которой я нуждаюсь. Ты знаешь как?   -  person Cyassin    schedule 28.05.2014
comment
я отправил ответ. проверьте его.   -  person Milind Anantwar    schedule 28.05.2014


Ответы (2)


Я сделал подобное с помощью iframes, используя jQuery: $('iframe').contents().find("#internaldiv"), это работает, но только если iframe src и основной веб-сайт являются частью одного домена, в других случаях вы должны иметь дело с одной и той же политикой домена (http://en.wikipedia.org/wiki/Same-origin_policy) и реализовать междоменную политику на вашем сервере и на другом сервере домена.

person soloidx    schedule 28.05.2014
comment
Спасибо, в предыдущем ответе было указано, как это сделать, во-первых, но спасибо за упоминание той же политики домена. В данном случае это было правильно. - person Cyassin; 28.05.2014

Под src вы имеете в виду содержание, верно? (src — это атрибут iframe, который указывает URI самого iframe)

Вы можете изменить тип документа, изменив содержимое iframe. Один из возможных способов — воссоздать iframe и повторно вставить содержимое, добавив перед ним тип документа. К сожалению, невозможно добавить тип документа к существующему iframe с помощью DOM.

Пример:

var iframe = document.createElement("iframe");
var idocument = iframe.contentDocument;
idocument.open();
idocument.write("<!DOCTYPE html...") // Doctype goes here
idocument.write("<html>...</html>") // Content goes here
idocument.close();
person Arseni Mourzenko    schedule 28.05.2014
comment
Да, вот что я имею в виду, URL-адрес iframe пришел с другой страницы, поэтому я подумал, что вы не можете изменить его содержимое? попробую твой пример - person Cyassin; 28.05.2014
comment
@Nick: Прошу прощения, Ник, изначально я неправильно понял твой вопрос. Я отредактировал свой ответ, чтобы сосредоточиться на проблеме типа документа. - person Arseni Mourzenko; 28.05.2014
comment
Спасибо, это работает до некоторой степени, но, похоже, сторонний элемент управления делает с ним что-то странное. Я просто поиграю с этим немного и дам вам знать, как это происходит. - person Cyassin; 28.05.2014
comment
В настоящее время он отображается как ‹iframe›‹html›doctype‹body› и т. д. Как я могу заставить его поместить docType перед тегом html? - person Cyassin; 28.05.2014
comment
Как это будет работать для существующего iframe вместо нового? - person Cyassin; 28.05.2014
comment
@Nick: тебе нужно создать iframe. К сожалению, невозможно добавить тип документа к существующему iframe с помощью DOM. - person Arseni Mourzenko; 28.05.2014
comment
Ох, ну ладно. Это был конкретный вопрос, который я задал в начале. - person Cyassin; 28.05.2014