Подтвердить что ты не робот

$ не определен в iFrame

У меня есть страница с iframe. моя страница iframe - iframe.php, и моя главная страница - main.php, когда я загружаю iframe.php непосредственно, мой код jquery выполняется отлично, но когда я загружаю main.php(который содержит iframe.php как iframe), я получаю сообщение об ошибке "$не определено".

это может быть потому, что и main.php, и iframe.php используют

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

если да, то как я могу использовать jquery на странице iframe без включения этой строки?

4b9b3361

Ответ 1

Я понял это. В iFrame я использовал

var $ = parent.$;

а также предоставление любых jquery-вызовов документа для контекста. т.е.

$("#element", document).doStuff();

Это странно, потому что оригинальный способ, который у меня был (с jquery, включенным в обе страницы), отлично работал в Safari для Mac, но в Firefox он дал мне ошибку

Ошибка: c.defaultView.getComputedStyle(h, null) - null Исходный файл: http://code.jquery.com/jquery-latest.pack.js Линия: 16

Ответ 2

Плохая новость - вы не можете использовать JQuery, если она не указана в документе. Таким образом, вам придется загружать его независимо.

На самом деле нет никакого вреда, включая вызов jquery в обоих документах. У меня есть несколько клиентов, которые iFrame часть моего приложения для автоматизации маркетинга (включая его), а также Jquery включены в их родительский документ, и он работает отлично, без конфликтов. С точки зрения нагрузки, предполагая, что вы настроены правильно, удар будет незначительным из-за кэширования. Итак, включите прочь.

Практическое руководство по iFrames... подумайте о них как о отдельных страницах внутри вашей страницы. Да, в некоторых случаях вещи переносятся, но модель происхождения документа предотвращает пересечение между родительским и дочерним элементами CSS.

Ответ 3

Я загружал iframe на веб-страницу, и я мог найти $object, используя

var $ = parent.$;

но это не было выполнение выбора элементов iFrame. Найденный ниже код для выполнения селектора на корпусе iFrame

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

Как-то объект документа также был undefined.

Источник выше кода: https://gist.github.com/843229

Надеюсь, что это поможет кому-то.