Чтение содержимого IFrame с использованием JavaScript - PullRequest
4 голосов
/ 06 мая 2010

Хорошо, я впервые серьезно имею дело с IFrames, и я не могу понять некоторые вещи:

Сначала пример кода, с которым я тестирую:

<head>
<script type="text/javascript">
function init(){
  console.log("IFrame content: " + window.frames['i1'].document.getElementsByTagName('body')[0].innerHTML);
}
</script>
</head>
<body onload="init();">
<iframe name="i1" src="foo.txt"/>
</body>

файл "foo.txt" выглядит так:

sample text file

Вопросы:

1) Кажется, что iframe ведет себя как документ HTML, а текст файла фактически является частью тела. Зачем ? Является ли правило для IFrame быть документом HTML. Разве содержание iframe не может быть простым текстом ??

2) По какой-то причине содержимое файла оборачивается тегом pre . Почему это так? Это всегда так?

3) Мой метод доступа в javascript работает, но есть ли другая альтернатива? [нативные решения для js, пожалуйста]. Если содержимое всегда заключено в тег pre всегда, тогда мне действительно придется искать внутри pre а не искать innerHTML

Ответы [ 4 ]

6 голосов
/ 06 февраля 2012

Мне было трудно получить содержимое TXT-файла, являющегося источником iframe. Это мое решение:

document.getElementById( 'iframeID' ).contentWindow.document.body.innerText
4 голосов
/ 06 мая 2010

innerHTML делает не возвращает точное содержимое элемента, его нестандартизированный метод возвращает HTML, который эквивалентен реальному содержимомуи в HTML эквивалент простого текста: foo....

Возможно, вам повезет больше с свойством innerText ..

0 голосов
/ 06 мая 2010

Вот так браузеры обрабатывают текстовые файлы, потому что они «выглядят лучше» таким образом (не только внутри iframe). Браузеры могут обрабатывать много типов файлов, и не стоит ожидать, что они покажут все в необработанном виде, верно? Поскольку страницы браузера (и iframes) предназначены для представления, никто не использует iframes для конфигурации или для чтения необработанных данных с диска.

Если вы хотите иметь полный контроль над презентацией, просто измените тип файла на html, и он будет восприниматься как html. (в частности, это решит «предварительную» проблему)

Будет ли это ответить на ваши вопросы?

0 голосов
/ 06 мая 2010

1) Кажется, что iframe ведет себя как документ HTML, а текст файла на самом деле является частью тела. Зачем ?

вы используете интерфейс DOM / JS. это будет работать, только если контент обрабатывается как HTML / XML.

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