Запустите JQuery в контексте другого кадра

Два возможных способа:

  1. не использовать устаревший API
  2. Использовать @SuppressWarnings("deprecation")

39
задан ChrisDiRulli 12 February 2009 в 10:25
поделиться

3 ответа

Эти jQuery функция, которую Вы чаще всего вызываете с $, берет второй аргумент, названный контекстом, который является, "какой элемент DOM объекта jQuery должен я выполнять в поиске". Большую часть времени Вы опускаете этот аргумент, таким образом, значения по умолчанию контекста к текущему документу HTML. Когда Ваш код выполняется в iframe, значениях по умолчанию документа к документу того iframe. Но можно легко захватить документ для одного из других кадров.

, Например, помещает это в myFrame.html, и это удалит все h1 элементы из кадра с blah.html в нем. Заметьте второй аргумент $, который является выражением, которое захватывает скучный кадр из важного кадра:

<html>
  <head>
    <script type="text/javascript" src="/javascripts/jquery.js"></script>
    <script type="text/javascript">
      function doIt() {
        $('h1', window.parent.frames[0].document).remove()
      }
    </script>
  </head>
  <body>
    <h1>My Frame</h1>
    <a href="#" onclick="doIt()">Do It</a>
  </body>
</html>
81
ответ дан pjb3 23 September 2019 в 17:38
поделиться

Я не уверен в плагине блока, но не можете Вы овладевать соответствующим кадром и управляйте им с помощью "дерева кадра", чего-то вроде этого: (из importantFrame.htm)

parent.theFrame.someProperty = someValue;

, например:

parent.theFrame.location.href='anotherPage.html';

Из того, что я читал, Вам, возможно, понадобился бы JQuery на целевой странице, но Вы могли попробовать что-то как:

parent.theFrame.block();

или возможно:

$('#theFrame').block();
0
ответ дан Andrew M 23 September 2019 в 17:38
поделиться

Как сказано в pjb3, установите контекст jQuery. Если у вас есть вложенные фреймы, ваш код будет выглядеть так:

$('*',window.parent.frames[0].frames[0].document).size();

Или, еще лучше, сделайте ярлык:

targetFrame = window.parent.frames[0].frames[0].document;
$('*',targetFrame).size();
4
ответ дан 27 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: