为什么Firefox会激活两个嵌入式swfs请求?

时间:2009-07-10 04:57:21

标签: flash http firefox embed swfobject

当swf嵌入页面并且在浏览器中本地缓存时,浏览器会触发两次swf请求。 Here is a simple example

第一个请求返回预期的200 OK,第二个请求在第一个请求完成后触发304 Not Modified,表示该文件现在已在本地缓存。

为什么这个2 nd 请求被触发,我该如何阻止它?

3 个答案:

答案 0 :(得分:2)

我想我明白了。我更仔细地阅读了Firefox的错误报告,这看起来是由我安装的AdBlock Plus引起的。首先,我确认您的更新页面仍然会出现该错误,并再次进行再现。然后,我禁用了AdBlock Plus并尝​​试了相同的测试。双重要求不再发生。因此,如果您安装了该扩展程序,或者可能是类似的扩展程序,则可能是原因。

This是关于插件被双重实例化的错误报告,this是AdBlock Plus导致它的错误报告。

答案 1 :(得分:1)

我刚刚确认这也适用于我。

起初,我认为这是由于Firefox的一个错误。请参阅this page上的常见问题解答#16。然而,他们引用的错误似乎是固定的。

然后,我查看了一些使用SWFObject 2.2嵌入SWF的网站。没有发生双GET。我认为不同的是,在我的代码中,我在页面的<head>而不是正文中调用swfobject.embedSWF。将脚本放在头部是SWFObject 2.2文档推荐的内容(这与旧版本的SWFObject略有不同)。

所以,如果我是你,我会尝试这样做:

  1. 删除google.load(“swfobject”,“2.2”)并直接包含SWFObject脚本。
  2. 将您的swfobject.embedSWF代码移至页面的头部。

答案 2 :(得分:1)

我相信这也可以通过运行Firebug来触发 - 尝试在禁用Firebug时使用LiveHTTPHeaders(或其他一些像http查询的http嗅探应用程序)检查您的浏览器请求。