Google Chrome中页面加载两次

38

有人在Google Chrome中执行Page_Load两次的问题吗? 这是一个简短的问题,我不知道还有什么需要解释的......

我有一个简单的asp.net页面,在Firefox和IE中一切正常。 但在Chrome中,Page_Load被触发了两次......

有没有想法为什么会这样?

后来的编辑: -奇怪的是我有4个重复器...与随机值绑定。由于页面加载两次,随机方法被调用了两次,但是重复器采用最初的值...所以第二个post back在渲染步骤之后被触发。

第3次编辑:它只发生在刷新时!

解决方案(对于我的情况):有一个空的img src,那就是原因。


这是发生在所有页面还是只有特定页面?如果是所有页面,也许可以向Google提交一个错误报告? - Greg
不幸的是,它不适用于所有页面...只适用于特定页面,所以我认为这只是该页面的一些小问题....或者可能是大问题:) - Cristian Boariu
1
在这种情况下,我会使用一种标准的故障排除技术。逐渐从页面中删除一些内容,直到问题消失为止。 - Greg
是的 Greg,我有时使用这种技术,但在这种情况下,页面非常复杂,有4个重复器和大量的代码。 - Cristian Boariu
22个回答

44

如果页面包含没有src属性(或src为空等)的img标签,则我注意到在IE中存在相同的问题。不确定Chrome是否也会出现这个问题,但检查一下是值得的,对吧?


5
Chris,你的推测太棒了!!!问题就出在一个空的img src上。非常感谢! - Cristian Boariu
1
我也遇到了同样的噩梦般的 bug!对我来说,是一个伴随着必须使用的母版页的 <input type="image" src=""> 标签。 - Peter
1
@Chris - 听起来像是一个不错的有根据的猜测。如果我听到任何确定的消息,我会在这里发布。 - Mark Freedman
我的问题是 src =“#” 会导致Chrome和iPad浏览器(Safari和Dolphin)触发两次。 - Nick
您应该得到一枚奖章,先生! - quangteo.media
显示剩余5条评论

14

对我来说,问题是由于扩展程序 Firebug Lite for Google Chrome 引起的。一旦停用该扩展程序,页面只会加载一次。


花了好几个小时找到是Firebug Lite导致的问题。非常感谢! - Thomas Clowes
谢谢,这也是我的问题。与Firefox上的Firebug相比,Firebug Lite太差了。 - David
Grammarly为我完成了这个任务。 - undefined

7

我遇到了一个非常类似的问题: Chrome 和 Firefox 会加载页面两次, 而 Internet Explorer 只会加载一次。

这个问题是由于我的 .htaccess 文件引起的:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

当浏览器请求 favicon.ico 时,我的 index.php 页面被调用,从而导致服务器受到了双重访问。我的解决方案是创建一个 favicon.ico,虽然我也可以让 index.php 处理这种特殊情况,甚至使用 .htaccess 文件,但无论如何,我都需要一个 favicon.ico :)

您,先生,真是应该得到一枚奖章。我一直在苦苦思索,但现在您说出来,它变得如此明显!更令人烦恼的是,我以前也遇到过这种情况,但没有将其联系起来。谢谢 :) - ledneb
是的,我最初开始排除这个问题时,认为这是我的asp.net代码中的线程问题,结果发现是该死的favicon.ico引起了问题,巧合的是使用内置的开发人员工具无法看到它 - 我需要使用Chrome的“Live HTTP Headers”插件来查看两个请求...我也同意@miracl应该得到一枚奖章!谢谢 :) - Steve Rathbone

6

我也曾经遇到过同样的愚蠢问题。

页面加载两次,而且更新内容变成了空白。

幸亏看了这篇文章,我检查了我的CSS文件。

我删除了以下这行代码:

body { background-image: url(); }

那就是问题所在了。


4

我最近也遇到了Chrome渲染两次的问题,这种情况的原因是

<iframe src="#"></iframe>

一旦我把它设置为

<iframe></iframe>

或者完全移除iframe,那么双重渲染就不会再出现。


1
我原本使用了 href="#" 作为我的导航菜单中的占位符,但这会导致它加载两次。 - Jeff Bluemel

2
除了Chris Shaffer的答案让我找到了正确的方向,我还想补充一点,在我的情况下,还有一个空src的

1
在我的情况下,是在我的index.html文件的头部有这个<link rel="shortcut icon" href="#" />标签:
<html lang="en">
  <head>
  ...
  <link rel="shortcut icon" href="#" />
  ...
  </head>
  ...
</html>

我刚刚删除了那行代码,问题解决了。

1

Gecko基于的浏览器在标记语言不正确时会出现此问题。这意味着XHTML和CSS。

这里有一篇关于这个问题的好文章:http://www.110mb.com/forum/how-to-stop-firefox-dual-pageloads-t27704.0.html

这就是为什么当您有一个空的src属性或空的href属性时,一些人会遇到问题。语法不正确,浏览器将其读取为“错误”。我想这是一种更不显眼的错误,否则你甚至都不会注意到,但由于你正在处理的页面的性质,它已经变得明显,并呈现为一个相当突兀的问题。

某些浏览器认为什么是“错误”,什么是“可通过”的可能略有不同,这就解释了为什么有些人在FF中遇到问题而在Chrome中没有,反之亦然。

只要感激你不是我这样的处境。我的页面由于这个问题发送了两封电子邮件,而且我无法修复糟糕的标记,因为太多地方都产生了这样的问题,很多CSS和HTML问题也不幸地是动态驱动的。

但我仍然不理解它在遇到这种非兼容性问题时为什么会抓取页面两次。


1

根据 Johann 的回复,我检查并禁用了 Google Chrome 中的每个扩展程序,并发现 Flash 扩展程序导致我的浏览器重新加载两次。删除它后,问题得到解决!


1
这可能是某个扩展程序/插件的问题。尝试使用隐身模式 - 这曾经对我有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接