$ не определен в 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 без включения этой строки?
Ответы
Ответ 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
Надеюсь, что это поможет кому-то.
Ответ 4
Обновление до более новой версии f.e. https://code.jquery.com/jquery-2.1.3.min.js