$ не визначено в iFrame - jquery, 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, не включаючи цей рядок?

Відповіді:

15 для відповіді № 1

Я зрозумів це. У iFrame, який я використовував

var $ = parent.$;

а також надання будь-якого виклику jquery документу для контексту. тобто

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

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

Помилка: c.defaultView.getComputedStyle (h, null) - нульовий вихідний файл: http://code.jquery.com/jquery-latest.pack.js Рядок: 16


3 для відповіді № 2

Я завантажував iframe на веб-сторінку, і я міг знайти об'єкт $ за допомогою

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

Сподіваюсь, це допомагає комусь.


2 для відповіді № 3

Погані новини - ви не можете використовувати Jquery, якщо це не вказано в документі. Отже, вам доведеться завантажувати його незалежно.

Насправді немає жодної шкоди, включаючи jqueryдзвінок в обидва документи. У мене є декілька клієнтів, які iFrame використовують частину програми моєї компанії для автоматизації маркетингу (до якої він включений), а також включає Jquery у батьківський документ, і він чудово працює без жодних конфліктів. З точки зору навантаження, вважаючи вас " переналаштувавши правильно, звернення буде незначним через кешування. Отже, включайте геть.

Емпіричне правило iFrames ...сприймайте їх як окремі сторінки всередині вашої сторінки. Так, в деяких випадках речі переносяться, але модель походження документа не дозволяє таким речам, як CSS, переходити між батьком і дитиною.


0 для відповіді № 4

Оновіть до нової версії f.e. https://code.jquery.com/jquery-2.1.3.min.js