2012-12-09 7 views
0

Как сослаться на компонент внутри IFRAME показан в this reply. Он работает в предположении, что есть только один IFRAME (или что мы уверены, что нулевого будет достаточно). Тем не менее, мне интересно, как идентифицировать фактический IFRAME, который я хотел бы тыкать.Как определить, какой IFRAME это?

мне нужен синтаксис для изменения:

window.frames[0].document. + my stuff 

во что-то вроде:

window.frames["theIdOfMyIFrame"].document. + my stuff 

, но я не могу получить это право.

ответ

0
  1. Я хотел бы избежать использования window.frames. (Возможно, из-за отсутствия опыта с ними.)
  2. Когда ответ в сети на форме что-то [0], будьте осторожны. Плохой стиль кодирования, возможно.
  3. Необходимо использовать ссылку на ваш theIdOfMyIFrame.
  4. Внутренний документ находится под contentDocument.

Вы можете сослаться на встроенные компоненты, подобные этому.

document.getElementById("theIdOfMyIFrame") 
    .contentDocument.getElementById("controlIdInTheembeddedPage") 
    .value = "Christophe has eyes for details!"; 
+0

После того, как я прочитал дискуссию выше, я позволил вам изменить ваш ответ. –

+0

@ konrad-viltersten Этот ответ одобрен, но, основываясь на ваших других комментариях, вы, кажется, смущены об iframes. Они не оставляются в html5, напротив, они становятся намного более мощными. – Christophe

+0

@ Christophe Проверьте мое редактирование. :) –

0

Использование document.getElementById вместо противной устаревшего window.frames собственности:

document.getElementById("theIdOfMyIFrame").contentDocument ... 
+0

Ой, забыл, что вам нужен «contentDocument» здесь. – duskwuff

+0

Вы забыли * contentDocument *. Embarassing, Dusky ...: D –

+0

Как вы думаете, что 'window.frames' устарел? Это неверная информация, которую вы получили там ... – Christoph

1

Я имел дело с этой проблемой ранее.

Если вы показываете ответ запроса кросс-сайта в iframe, новые браузеры отказывают в доступе к этому iframe из-за политики одного и того же происхождения или межсайтового скриптинга/запроса.
Для получения дополнительной информации смотрите здесь: IFrame Permission Denied

Если вы хотите, чтобы динамически добавлять контент, это решение может помочь вам: Add Dynamic Content

С наилучшими пожеланиями

+0

На самом деле оба файла в настоящий момент локально размещены, поэтому URL-адрес: * file: // something *. Но неплохо получить некоторые хедз-ап для предстоящей проблемы межсайтового скриптинга. Благодаря! –

+1

Добро пожаловать. Несколько дней назад я хотел опубликовать файл без перезагрузки страницы, а затем я столкнулся с этой проблемой. Всегда ожидайте неожиданного. Хорошего дня! –

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