我有一个包含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>
如果是这样,我如何在iframe页面中使用jquery而不包括这一行?
答案 0 :(得分:15)
我明白了。在我使用的iFrame中
var $ = parent.$;
以及给任何jquery调用上下文的文档。即
$("#element", document).doStuff();
这很奇怪,因为我拥有它的原始方式(两个页面都包含jquery)在Safari for Mac中运行良好但在Firefox中它给了我错误
错误:c.defaultView.getComputedStyle(h,null)为null源文件:http://code.jquery.com/jquery-latest.pack.js行:16
答案 1 :(得分:3)
我正在网页中加载iframe,我可以使用
找到$ objectvar $ = 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 :(得分:2)
坏消息 - 你不能使用Jquery,除非它在文档中。所以,无论如何你都要加载它。
在两个文档中包含jquery调用实际上没有任何害处。我有几个客户iFrame我公司的应用程序的一部分用于营销自动化(包括它)和Jquery包含在他们的父文档中,它工作得很好,没有冲突。从负载的角度来看,假设您设置正确,由于缓存,命中率可以忽略不计。所以,包括在内。
iFrame上的经验法则...将它们视为页面内的单独页面。是的,在某些情况下,事情会继续存在,但文档原始模型会阻止像CSS这样的东西在父母和孩子之间穿越。
答案 3 :(得分:0)
升级到更新的版本f.e. https://code.jquery.com/jquery-2.1.3.min.js