Как использовать jquery из родителя внутри iframe?

У меня есть файл, назовем его parent-win.html, обслуживаемый доменем example.com. Этот файл содержит jquery. Iframe, позволяет называть его iframe-win.html, встроен в эту страницу. iframe-win.html имеет элемент формы с id form-elem и значением Hello World!. Теперь я выполняю внутри iframe.

var jQuery = parent.jQuery;
console.log(jQuery('#form-elem').val());

Согласно моим ограниченным знаниям JS, я должен видеть Hello World! на консоли, но вместо этого вижу undefined. Теперь, мой вопрос: мне нужно снова загрузить jquery в iframe или я могу использовать объект jquery, уже загруженный в родительское окно?

Обратите внимание, что это не обычный доступ к содержимому iframe/parent из родительского/iframe.

Ответ 1

попробуйте это в iframe:

if (typeof(jQuery) == "undefined") {
    var iframeBody = document.getElementsByTagName("body")[0];
    var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); };
    var $ = jQuery;
}

Ответ 2

Вот лучшее решение, основанное на ответе Moin:

if (typeof(jQuery) == "undefined") {
    window.jQuery = function (selector) { return parent.jQuery(selector, document); };
    jQuery = parent.$.extend(jQuery, parent.$);
    window.$ = jQuery;
}

Таким образом, мы можем использовать $-функции, такие как $.get, $.extends и т.д.

Ответ 3

Вам нужно загрузить jQuery внутри iframe.

EDIT: Хорошо, если фрейм не находится в одном домене, вам не нужно перезагружать jQuery. См. Доступ к библиотеке jQuery из iframe