Как выбрать <iframe>, который встраивает тот самый b.html с кодом jquery в b.html? - PullRequest
0 голосов
/ 26 декабря 2010
<iframe src="b.html"></iframe>

<iframe src="b.html"></iframe>

<iframe src="b.html"></iframe>

Как видите, 3 <iframe> каждый встраивает b.html,

b.html:

<script type="text/javascript">
//how can I get reference to the very `iframe` that embeds me ??
//for the 1st b.html,select the 1st iframe,and so on...
</script>

Как написать код jquery в b.html?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2010

Я не использовал jquery по нескольким причинам:

  1. Я не знаю JQuery
  2. Я не думаю, что это работает слишком хорошо для всех кадров

Не должно быть никакого конфликта с jquery независимо.

Основная идея состоит в том, чтобы найти родительский элемент, найти все iframe, а затем найти iframe с помощью contentWindow, которое совпадает с окном фрейма.

Вот оно работает: http://jsbin.com/ewape5/8 (нажмите на текст Hello World в одном из фреймов)

Вот код:

function findIframe() {
  var parentIframes = window.parent.document.getElementsByTagName('iframe');
  var i = parentIframes.length;
  while  (i--) {
    var possibleParent = parentIframes[i];
    if (possibleParent.contentWindow == window) {
      return possibleParent;
    }
  }
  return null;
}
0 голосов
/ 27 декабря 2010

Первым делом сначала поместите скрытое поле внутри b.html поверх страницы или чего-то еще.Теперь значение / id для этого должно быть отличным для каждого фрейма.Когда вы обслуживаете эту страницу сервера, добавьте код, который сделает это за вас.какой-то счетчик я предполагаю.Я бы предложил добавить счетчик к идентификатору следующим образом:

<input type="hidden" id="frame<frame_no>/>

Вы добавляете функцию загрузки документа в свой скрипт внутри b.html, который в основном является селектором jquery, который выбирает этот элемент, а затем запускает родителей сселектор, который идентифицирует фрейм.Для информации о родителях: http://api.jquery.com/parents/

Теперь у вас есть ссылка на iframe.Надеюсь, что это поможет и ответит на ваш вопрос.

Я не уверен, достаточно ли динамична ваша страница b.html для этого.Если это не так, то вы можете добавить скрытое поле с тем же именем класса, и теперь у вас есть все скрытые поля в различных фреймах.

Теперь к этому вы также можете добавить attr как idиспользуя jquery, запустив каждый или вы можете просто обрабатывать свои привязки и т. д. внутри этой каждой функции, так как вы можете затем найти iframe, выполнив

$(this).parents(<iframe selector>)

Достаточно ли это хорошо?

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