что такое контекст jQuery / javascript для фрейма в фрейме? - PullRequest
6 голосов
/ 28 января 2010

Позвольте мне предвосхитить это с помощью ... Я ссылался на этот вопрос / ответы, и он, кажется, содержит подсказки, но я все еще пропускаю всю картину

Запуск JQuery в контексте другого фрейма

По сути, структура индексной страницы такова

<html>
<body>
  <div class="frames-wrap">
      <iframe id="this-iframe" src="location.php">

      </iframe>
  </div>
</body>
</html>

location.php содержит набор фреймов (хм, не моя идея ...), который имеет два фрейма, настроенных так ...

<frameset cols="350,*">
  <frame src="search.php" id="frame_search" name="search"/>
  <frame src="edit.php" id="frame_edit" name="edit" />
</frameset>  

если я хочу манипулировать объектами между страницей индекса и этими элементами, как бы мне поступить?

Я продолжаю думать, что контекст должен быть чем-то похожим на window.parent.frames[0].document ... что еще мне не хватает?

Ответы [ 4 ]

4 голосов
/ 28 января 2010

Предисловие: вы не сможете получить доступ к содержимому iframes, если оно не происходит из того же домена.

Чтобы выбрать элементы в вашем iframe, вы можете использовать вызов jQuery, подобный этому

element = $("#this_iframe").contents().find("#frame_search")

Ключ должен использовать функцию contents(). См. Обход / содержание

3 голосов
/ 28 января 2010

Я думаю, что ссылка от technicolorenvy имеет ответ, но у селектора есть менее известный второй параметр, где вы можете установить контекст.

Примерно так:

var iframeDoc = document.getElementById('myIframe');
iframeDoc = (iframeDoc.contentWindow) ? iframeDoc.contentWindow : (iframeDoc.contentDocument.document) ? iframeDoc.contentDocument.document : iframeDoc.contentDocument;


// From the parent window
$('p', iframeDoc).html('Hello from parent');

http://docs.jquery.com/Core/jQuery#expressioncontext

1 голос
/ 28 января 2010

Если вы предоставите свои идентификаторы кадров, которые являются допустимыми идентификаторами JavaScript, то вы можете использовать такие конструкции, как window.top.this_iframe.frame_edit.document в качестве контекста.

0 голосов
/ 28 января 2010

Все это было полезно. Я продолжал бомбить, когда пытался пройти через iframe в DOM. Это может показаться из-за того, что у меня есть код, находящийся в методе ready (), но набор фреймов, который вызывался в iframe, не был загружен к моменту запуска $ (document) .ready ().

Спасибо всем за помощь и отзывы!

...