window.onload适用于aspx页面,但不适用于普通html

window.onload works fine with aspx page, but not in regular html

本文关键字:适用于 不适用 html onload aspx 页面 window      更新时间:2023-09-26

有人能向我解释一下为什么window.onload在aspx中工作良好,但在xhtml中却不能?

这个window.onload示例在aspx:中运行良好

<script type="text/javascript">
    //<![CDATA[
      //handles the collapse of submenu items on navigation side menu
 function toggle() {
     document.getElementById('node4').style.display = '';
 }
 window.onload = toggle;
//]]>
 </script>

然而,这个window.onload示例在XHTML 1.0中并不严格。(加载页面时不会立即触发countDownClock):

<script type="text/javascript">
   //<![CDATA[
   //handles the collapse of submenu items on navigation side menu
   function countDownClock() {
       today = new Date();
       openingDay = new Date();
       openingDay.setMonth(2, 23);
       (today > openingDay) ? openingDay.setFullYear(2013) : openingDay.setFullYear();
       openingDay.setHours(9, 0, 0, 0);
       document.getElementById("mallclock").dayNow.value = showDate(today);
       document.getElementById("mallclock").timeNow.value = showTime(today);
       var daysLeft = dayDiff(today, openingDay);
       var hoursLeft = hoursDiff(today, openingDay);
       var minutesLeft = minutesDiff(today, openingDay);
       daysLeft = ((hoursLeft - 24) >= 0) ? daysLeft + (hoursLeft / 24) : daysLeft;
       hoursLeft = ((hoursLeft - 24) >= 0) ? hoursLeft - ((hoursLeft / 24) * 24) : hoursLeft;
       hoursLeft = ((minutesLeft - 60) >= 0) ? hoursLeft + (minutesLeft / 60) : hoursLeft;
       minutesLeft = ((minutesLeft - 60) >= 0) ? minutesLeft - ((minutesLeft / 60) * 60) : minutesLeft;
       document.getElementById("mallclock").days.value = daysLeft;
       document.getElementById("mallclock").hours.value = hoursLeft;
       document.getElementById("mallclock").minutes.value = minutesLeft;
   }
   window.onload = countDownClock;
 //]]>
</script>

它只触发body事件,该事件设置为在 1分钟后显示countDownClock

<body onload = "setInterval('countDownClock()', 60000)">

啊哈,编辑让一切都不同了。

一个页面只能有一个load事件的处理程序,因此,如果使用window.onload添加一个处理程序,并使用body onload属性添加另一个,则其中只有一个可以工作。

将两个操作放在同一个处理程序中:

window.onload = function(){
  countDownClock();
  window.setInterval(countDownClock, 60000);
};