У мене є сторінка з вбудованим кадром.моя сторінка 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