Javascript window.onload()在第一次射击中未使用IE 8开火

Javascript window.onload()在第一次射击中未使用IE 8开火,javascript,html,internet-explorer,xhtml,internet-explorer-8,Javascript,Html,Internet Explorer,Xhtml,Internet Explorer 8,我正在尝试使用IE 8使我的页面正常工作,我从这里发现: 也就是说,我的页面必须符合XHTML 1.0,至少符合CSS 2.1,我使我的页面和CSS兼容的警告很少,但仍然是window.onload()未启动。有人遇到过这个问题吗 以下是代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&g

我正在尝试使用IE 8使我的页面正常工作,我从这里发现: 也就是说,我的页面必须符合XHTML 1.0,至少符合CSS 2.1,我使我的页面和CSS兼容的警告很少,但仍然是window.onload()未启动。有人遇到过这个问题吗

以下是代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=8"/>
        <title>Testing</title>
        <link rel="stylesheet" href="test.css" type="text/css"></link>
        <script type="text/javascript" src="login.js"></script>
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript">
            window.onload = function()
            {
                          // Not coming here at all on first shot   
            }
        </script>
    </head>
    <body>
     .
     .
     .

测试
window.onload=函数()
{
//第一枪就不来了
}
.
.
.
然而,刷新页面似乎可以让它工作

我是不是遗漏了什么

更新:


一个IE插件在禁用其正常工作后造成了这个问题。感谢您的时间和回答:)

在加载所有内容(包括外部图像等)后,onload将启动。这些资源在第一次加载时(在缓存之前)可能需要很长时间。另一种可能是代码中的错误只会影响IE,因为它会停止脚本(但只有第一次是奇数)。

如果使用Apache和其他web服务器(IIS?)获得不同的结果,并使用IE8比较最终结果,则不同的结果必须在发送的内容类型标头中。获取平台的wget实用程序并查看生成的标题。如果您使用的是Windows,那么它就相当不错。

下面的代码对我很有用。当我在Firefox中加载页面时,我会立即看到警报。当我第一次在IE8中加载页面时,它会警告我活动内容。如果我允许被阻止的内容,它会要求我确认,我会这样做。然后,警报将按预期显示。如果这对您不起作用,请在另一台计算机上尝试IE 8,或者开始删除页面中的代码以检查错误。您可以进行二进制搜索:注释掉页面的前半部分,查看是否出现警报;如果仍然没有,则取消对前半部分的注释,并注释掉后半部分。根据需要重复,直到您将其缩小到不符合要求的代码。顺便说一句,您不需要XHTML来满足IE8的要求。HTML工作得很好,实际上有一些优势

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    window.onload=function() { alert('hello');};
    </script>
  </head>
  <body>
  </body>
</html>

window.onload=function(){alert('hello');};

您的JavaScript中可能有错误,如果发生这种情况,之后的任何JavaScript都将无法正常运行


尝试删除对login.js和common.js的引用,并在有问题的函数中尝试一个警报。

我没有IE8要亲自测试,但是这个测试做什么

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test IE 8</title>
<script type="text/javascript">
/* <![CDATA[ */
window.onload = function(){alert('Good morning!');}
/* ]]> */
</script>
</head>
<body>
<h1>Hello</h1>
<body>
</html>

测试IE 8
/*  */
你好
如果此测试按预期工作,请尝试内部JavaScript块周围的CDATA位

然后,如果这不能像预期的那样工作,那么它上面的外部JavaScript中可能有某种东西阻止启动onload。上一张海报提到了这一点。此时,请尝试使用错误控制台或调试器来指明方向。

对于IE,请尝试:

window.onload = new function() { alert('hello');};

这是一个相当古老的线程,但我找到了一个解决方案,可能会帮助其他人

我通过一个动态注入的脚本向
window.onload
添加了一个函数(实际上是为了模拟外部脚本加载,原因在本文中并不重要)。如本文所述,在IE8中的第一次加载时,
窗口.onload
不会启动,但所有后续调用都会启动

我发现,如果我将其作为内部脚本放入HTML文件中,它每次都会工作:

var windowOnload = window.onload || function() {};
window.onload = function() { windowOnload(); };
上面的代码所做的只是“初始化”IE8的
窗口。onload
不引人注目。我怀疑IE8第一次未能触发
window.onload
,如果它是从外部脚本调用的,因为
onload
事件尚未附加到window(或者用技术术语来说,它的类型未定义)。IE8似乎第一次这样做:在没有正确执行的情况下将
onload
附加到窗口

上面的代码变得非常明显:我们只是强迫IE8识别
onload
事件。我们不关心执行什么或不执行什么,所以我们只需确保管道通过任何现有的
窗口。onload
已经定义的代码(作为预防措施)

将其作为HTML的内部脚本非常重要(至少在我的测试中是这样)

因此,您的HTML将如下所示(相关部分):


var windowOnload=window.onload | | function(){};window.onload=function(){windowOnload();};
根据我的测试,在清除缓存并重新加载页面后,我每次都成功触发
window.onload


我希望这能有所帮助。

我知道这是一个老问题,但我也面临同样的问题

 window.onload=function() { alert('hello');};
被区别对待

 window.onload= new function() { alert('hello');};
这里的关键字是
new


我的JS在到达(onload=)部分时终止,直到我在“function”之前添加了单词“new”。即使在我的本地主机中没有“new”也可以正常工作,但一旦我把它放到网上,直到我添加了“new”之后它才会工作

老问题,但我也有同样的问题,但结果是另一个问题。我的问题是我做了
,排除了
第一种可能性,因为onload我只是调用一个设置数字的javascript函数。我正在研究我的代码中的任何错误,我刚刚编写了一个示例代码,它在IE 8中使用onload时运行良好(但是onload内容被此错误阻止:“为了帮助保护您的安全,Internet Explorer限制此网站运行脚本…”每次,我都必须“允许”使其工作).我发现如果Apache正在呈现页面,则onload不会启动。我有一个示例代码可以演示这一点。我想您可能会误解。不管你的onload处理程序实际上做了什么,重要的是什么
 window.onload= new function() { alert('hello');};