Ответ 1
попробуйте это в iframe:
if (typeof(jQuery) == "undefined") {
var iframeBody = document.getElementsByTagName("body")[0];
var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); };
var $ = jQuery;
}
У меня есть файл, назовем его 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.
попробуйте это в iframe:
if (typeof(jQuery) == "undefined") {
var iframeBody = document.getElementsByTagName("body")[0];
var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); };
var $ = jQuery;
}
Вот лучшее решение, основанное на ответе Moin:
if (typeof(jQuery) == "undefined") {
window.jQuery = function (selector) { return parent.jQuery(selector, document); };
jQuery = parent.$.extend(jQuery, parent.$);
window.$ = jQuery;
}
Таким образом, мы можем использовать $-функции, такие как $.get, $.extends и т.д.
Вам нужно загрузить jQuery внутри iframe
.
EDIT: Хорошо, если фрейм не находится в одном домене, вам не нужно перезагружать jQuery. См. Доступ к библиотеке jQuery из iframe