jQuery/iframe无法在Chrome中运行

Sar*_*raz 15 jquery facebook google-chrome facebook-page

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

http://www.facebook.com/apps/application.php?id=120196931351044&v=app_120196931351044

它结合了iframe来调用使用jquery的某些页面/图像库.除Chrome之外,所有浏览器都能正常运行.Chrome中的任何内容都不会出现在iframe中,只是空白背景.

我尝试使用load事件而不是ready处理程序,但仍然没有运气.
有没人见过铬的类似问题?

对你的帮助表示感谢.

标题中的大图像来自iframe,这是一个包含jquery的页面.

更新:

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

更新2

在iframe外部运行时,相同的代码似乎在chrome中工作,这里是工作页面的链接:

http://jsbin.com/esame4/4

更新3:

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

http://www.google.am/support/forum/p/Chrome/thread?tid=2c81c3e3fd99b388&hl=zh-CN
http://forums.sharethis.com/topic.php?id=2742

小智 5

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

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

  1. 为此,您需要为您的域提供 SSL 证书。

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

希望这可以帮助!


Jos*_*ock 2

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

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

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

另外,尝试将 jQuery 库<link>标签移动到标签内部<head>,因为这是更合适的位置。

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

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