jQuery: работа в iframe без повторной ссылки - PullRequest
1 голос
/ 11 мая 2011

Может быть, название немного вводит в заблуждение, и вопрос может быть слишком, но мне интересно, как можно работать с jQuery из внутреннего (того же хоста / домена) iframe без повторной ссылки на источник jQuery в загруженном iframeHTML.

Ну, я могу получить к нему доступ с помощью parent.jQuery();, но всякий раз, когда я пытаюсь манипулировать элементами с ним, он работает в кадре parent, а не в текущем, активном.

Iframe генерируется с ColorBox v.1.3.16.

Вот то, что я пробовал до сих пор, без всякой удачи .. (это происходит изнутри iframe):

jQuery = parent.jQuery;
jQuery(document).ready(function(){
    jQuery('#time-bar .slider', document).css({ 'background-color' : 'blue', 'left' : '-99%' });
});

Я использовал document здесь как родительский селектор, но он не работает, и я понятия не имею, что там следует использовать.

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Получено от TJ Crowder:

parent.jQuery(function($) {
    var element = $("#time-bar", document);
    console.log(element);
});

console.log() возвращает пустой объект или фактически не имеет представления, можно ли его назвать объектом: [].

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

За исключением других факторов, ваш код передает document в функцию jQuery() ($()), поскольку контекстный документ должен работать.

Пример:

HTML:

<script src="blah/blah/jquery.min.js"></script>
<iframe id='theframe' src='http://jsbin.com/ulehi4'>

iFrame HTML:

<input type='button' id='theButton' value='Click Me'>

iFrame JavaScript:

parent.jQuery(function($) {
  $("#theButton", document).click(function() {
    $("<p>Button clicked!</p>").appendTo(document.body);
  });
});

Живой пример

* 1022Тем не менее, если вы используете одну и ту же точную ссылку на файл jQuery (возможно, из одного из CDN, в котором он находится) как в родительском, так и во фреймовом, то это действительно очень мало накладных расходов.Вы можете вставить элемент script в iframe, если вы не контролируете разметку.
1 голос
/ 11 мая 2011

Если я правильно понял вопрос - см .: jQuery / JavaScript: доступ к содержимому iframe

что более важно оттуда:

$().ready(function () {
    $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
        $('some selector', frames['nameOfMyIframe'].document).doStuff();
    });
};

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