#javascript #xml #dom #creation
#javascript #xml #дом #создание
Вопрос:
Я хотел бы использовать JavaScript для выполнения следующих действий:
- Создайте XML-файл
- отобразить его в iframe
- управление содержимым с помощью DOM
Я создаю редактор XML, и у меня возникают проблемы с отображением xml в iFrame.
это код, который я использую в данный момент.
function previewContent(what){//changes the content of an iFrame
var tsite = document.getElementById('xmlinside').contentDocument;
tsite.open();
tsite.contentType('text/xml');
tsite.writeln(what);
tsite.close();
}
function makeXML(){
var tester = '<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>test</bookstore>';
previewContent(tester);
}
без tsite.contentType('text/xml')
iframe просто отображается test
.
когда я проверяю источник, он все еще находится в HTML с <bookstore>test</bookstore>
добавленной добавленной строкой и xml
версией в качестве комментария.
Я бы хотел, чтобы он отображался как браузер без таблицы стилей. Я знаю, что Safari отображает его как необработанный XML-файл, если с ним не связано форматирование. Это было бы идеально. Это тип содержимого, который портит? Вот почему я попытался изменить его, но это неправильный код. Любая помощь была бы отличной!
Ответ №1:
Несколько вещей, которые следует иметь в виду…
1.) Если это содержимое загружается через AJAX, вам нужно будет использовать application / xml media type / mime, а первый элемент должен иметь пространство имен…
<div id="root_most_ajax_element" xmlns="http://www.w3.org/1999/xhtml">
<p>ajax content</p>
</div>
2.) Никогда не используйте innerHTML (и фреймворки, поскольку они в значительной степени зависят от innerHTML) и особенно никогда не используйте его в сочетании с загрузкой содержимого, загруженного AJAX, проприетарный метод Microsoft неправильно регистрирует DOM, поэтому вы как бы видите, что код есть, но на самом деле его там нет, что делает ваш кодна данный момент полностью ненадежен. При использовании JavaScript используйте метод importNode для загрузки содержимого, загруженного с помощью AJAX (вместо использования iframe вы можете импортировать его в элемент division).
3.) Вы не сможете (и не должны) иметь доступ к (X) HTML iframe, если он не загружен с того же домена, поэтому, если он загружается со стороннего веб-сайта, забудьте об этом, иначе вы могли бы сказать, манипулировать текстом и обнаруживать их информацию (телефон, электронная почтаи т.д., Если они вошли во что-то).
Если вы выполняете эти три условия, вы должны иметь возможность работать с кодом, как если бы изначально не было iframes или AJAX.