Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 未在iFrame中定义$_Jquery_Iframe - Fatal编程技术网

Jquery 未在iFrame中定义$

Jquery 未在iFrame中定义$,jquery,iframe,Jquery,Iframe,我有一个带有iframe的页面。当我直接加载iframe.php时,我的iframe页面是iframe.php,我的主页是main.php。我的jquery代码执行得很好,但是当我加载main.php(其中包含iframe.php作为iframe)时,我得到一个错误“$未定义” 这可能是因为main.php和iframe.php都使用 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.

我有一个带有iframe的页面。当我直接加载iframe.php时,我的iframe页面是iframe.php,我的主页是main.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而不包括这一行呢?

坏消息——除非jquery在文档中,否则不能使用它。所以,不管怎样,你都必须加载它

在两个文档中都包含jquery调用实际上没有什么害处。我有几个客户,他们为我公司的营销自动化应用程序(包括它)构建了一部分框架,并且在他们的父文档中也包含了Jquery,而且它工作得很好,没有冲突。从负载的角度来看,假设设置正确,由于缓存,命中率可以忽略不计。所以,把它包括进去


iFrame的经验法则…将它们视为页面中的独立页面。是的,在某些情况下,一些东西会遗留下来,但是文档起源模型阻止了像CSS这样的东西在父对象和子对象之间的交叉。

我发现了这一点。在我使用的iFrame中

var $ = parent.$;
以及为上下文提供任何jquery调用文档。即

$("#element", document).doStuff();
这很奇怪,因为我最初的方式(两个页面都包含jquery)在SafariforMac中运行良好,但在Firefox中它给了我错误

错误:c.defaultView.getComputedStyle(h,null)为null源文件:第16行


我正在网页中加载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;
}
不知何故,文档对象也是
未定义的

上述代码的来源:


希望它能帮助别人。

升级到较新版本的f.e.

是否有可能您在iframe之外的main.php中有失败的代码?您是否尝试过临时注释框架并查看main.php上的其余代码是否正常工作?我知道与父文档相关的JavaCScript和iFrame存在一些问题。。。我相信如果iFrame的源文档与父文档在同一个域中,那么iFrame将继承父文档的javascript,否则它不会继承。我不知道这是否准确。。。但我的观点是,当您在iframe文档中删除jquery引用时会发生什么?当我注释掉iframe时,main.php页面没有错误。当我从iframe.php中删除除jquery include之外的所有javascript时,我会收到以下错误:c.defaultView.getComputedStyle(h,null)为null源文件:行:16当我删除iframe中的jquery引用时,我会收到相同的错误您有我们可以查看的代码示例吗?很难想象你用它在说什么