jQuery/iframe无法在Chrome中工作

jQuery/iframe无法在Chrome中工作,jquery,facebook,google-chrome,facebook-page,Jquery,Facebook,Google Chrome,Facebook Page,我在这里创建了一个facebook粉丝页面: 它使用iFrame来调用使用jquery的某些页面/图像库。除了Chrome之外,所有浏览器都可以正常工作。iframes中的Chrome没有显示任何内容,只有空白的白色背景 我尝试使用load事件而不是ready处理程序,但仍然没有成功。 有人在chrome上看到过类似的问题吗 非常感谢你的帮助 标题中的大图像通过iframe显示,iframe是一个包含jquery的页面 更新: 如下面的评论所示,它似乎在Safari中也不起作用 更新2 当在i

我在这里创建了一个facebook粉丝页面:

它使用iFrame来调用使用jquery的某些页面/图像库。除了Chrome之外,所有浏览器都可以正常工作。iframes中的Chrome没有显示任何内容,只有空白的白色背景

我尝试使用
load
事件而不是
ready
处理程序,但仍然没有成功。
有人在chrome上看到过类似的问题吗

非常感谢你的帮助

标题中的大图像通过iframe显示,iframe是一个包含jquery的页面

更新:

如下面的评论所示,它似乎在Safari中也不起作用

更新2

当在iframe之外运行时,相同的代码似乎在chrome中也能工作,下面是链接 至工作页:

更新3:

在使用iFrame时,这个问题似乎在chrome中仍然存在,如下所示:



一些建议,主要与gallery.php页面上的Javascript设置有关:

我的第一直觉是,这是Chrome/WebKit处理跨站点脚本和其他类似潜在安全漏洞的方式中的一个bug(甚至是一个预期的响应)。我知道一些安全漏洞涉及从iframe内部运行脚本(如所述)

也许这与您从ajax.googleapis.com引用jquery.min.js有关,而不是将其托管在与gallery.php页面相同的域中。尝试在服务器上放置jquery.min.js的副本并链接到该副本,看看是否有帮助

另外,尝试将jQuery库
标记移动到
标记内部,因为这是一个更合适的位置

您也可以尝试使用来运行您的旋转横幅。它会清理你的脚本,谁知道呢,也许会让浏览器相信你没有试图利用安全漏洞


如果无法切换到使用Innerfade,请至少将JavaScript变量更改为不使用$命名(例如,将“$curbox”变量更改为“curbox”)。这可能会进一步消除浏览器与Javascript之间的任何混淆。至少,这是一个很好的实践,尤其是在使用jQuery时。

检查页面中的响应标题,您正试图将其放入
iframe
。您正在查找名为的标题

这是一个新的安全选项,告诉浏览器不要加载框架内容。默认情况下,许多web服务器都会添加它


这是一个值得检查的东西。

嘿,sAc,我在Chrome 5.0.375.86上试用过,效果不错。由于safari和chrome使用相同的web引擎(webkit),因此可能会继承相同的问题。由于这是一个javascript问题,现在chrome使用google V8 javascript引擎代替JavaScriptCore(webkit的默认javascript引擎),这个问题似乎在chrome的最新版本中得到了解决。可能是JavaScriptCore上的一个问题,因为在构建iframe之前,DOM已经加载到文档中,所以不调度ready或load事件。临时解决方案可以设置一个标志来检查内容是否已初始化。放置一个带有setTimeOut的5到10秒计时器来检查此标志。如果未初始化,则在setTimeOut回调上调用它。因此,如果safari没有调用load或ready事件,setTimeOut可以帮您完成。当然,不要将它放在jquery层中。将其作为纯javascript标记放在HTML中,由iFrame加载。

如果document.ready出现问题,则不会在iFrame中调用,因为此时页面已经加载,是否可以将要加载的javascript放在新页面的底部而不是document.ready中,这样当其他东西都加载好后它就可以加载了? 我在一些页面上做了类似的事情,比如在页面顶部放一点javascript来显示加载的图像,在底部放一块javascript来隐藏它,等等

<html>
    <head><script>function pop(){alert("Page Loaded");}</script></head>
    <body>Lorum ipsum...</body>
    <script>pop();</script>
</html>

函数pop(){alert(“页面加载”);}
益智草。。。
pop();

解决方案其实很简单。当你看到Facebook页面/应用程序时,为了让你的iframe内容在Chrome中显示良好,你必须从安全的服务器调用内容或属性

您必须确保所有必需的文件和文件夹(如CSS、JS和图像文件)都位于安全的文件夹中

  • 为此,您需要域的SSL证书

  • 更改htaccess文件和mod rewrite条件以强制所有或特定文件夹使用SSL,尤其是在使用变量调用文件时。如果您使用的是绝对URL,请将其更改为https


  • 希望这有帮助

    无法工作的原因是浏览器将iframe标记为不安全。 要解决此问题,只需在要显示的页面头部添加一个字符集:

    < head ><br/>
    < meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/><br/>
    < /head><br/>
    




    safari似乎就是这样too@yaya3:是的,对我来说,safari也是这样。它在safari 5.0中不起作用,但我在
    文档外部看到了这种情况。准备好了吗?是否尝试将其移到内部<代码>var$curbox=(“#content_navigator.box:first”)@Nick Craver:我不认为这是问题所在,因为当直接运行到chrome而不是iframe时,会运行相同的代码。尝试使用
    标题(“x-frame-Options:SAMEORIGIN”)设置这些标题但问题仍然存在。@sAc-那么是否已经设置了x帧选项?如果是这样,将其更改为SAMEORIGIN会有所帮助,但前提是您的框架是本地页面。否则没关系,这是值得检查的,以防万一。你确定吗?看起来您仍然在变量名中使用$。我怀疑这会有什么不同,但不管怎样,这是一种很好的做法。是的,我甚至试过用jQuery替换$,但这也不是问题。我是说在你的a中