Изменение типа содержимого iframe на xml для отображения xml и манипулирования им через DOM - PullRequest
1 голос
/ 27 октября 2011

Я хотел бы использовать JavaScript для выполнения следующих действий:

  1. Создание файла XML
  2. отображение его в iframe
  3. манипулирование содержимым через 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 Ответ

0 голосов
/ 28 ноября 2011

Несколько вещей, о которых нужно помнить ...

1.) Если контент загружается через AJAX, вам нужно будет использовать application / xml тип / тип мультимедиа и первыйэлемент должен иметь пространство имен ...

<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, вы можете вместо этого импортировать его в элемент подразделения).

3.) Вы не будете (и не должны) бытьвозможность доступа (X) к HTML iframe, если он не загружен с того же домена, поэтому, если он загружается со стороннего веб-сайта, забудьте об этом, в противном случае вы можете сказать, манипулировать текстом и обнаруживать его информацию (телефон, электронная почта и т. д., если онивы вошли в систему).

Если вы соответствуете этим трем условиям, вы сможете работать с кодом, как если бы с самого начала не было встроенных фреймов или AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...