javascript - window.onload 适用于 aspx 页面,但不适用于常规 html

标签 javascript asp.net dom-events onload xhtml-1.0-strict

有人可以向我解释为什么 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 strict 中不起作用。 (它不会在页面加载时立即触发 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< 添加另一个处理程序 属性,只有其中一个会起作用。

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

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

关于javascript - window.onload 适用于 aspx 页面,但不适用于常规 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255043/

相关文章:

javascript - Three.js - 设置相机位置

ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery

javascript - Telerik MVC 控件,OnDocumentReady 触发两次

c# - 使用 ASP.NET Core 2.1 将静态文件发布到 Azure 后无法加载静态文件

javascript - Angular .js :13550 TypeError: Cannot read property 'compile' of undefined?

javascript - 在渲染 HTML 样式和脚本时加载启动页面?

javascript - 如果表单提交按钮被禁用 onclick,则表单不会在 chrome 中提交

javascript - 如何创建一个 URL,当点击该 URL 时批准或将名称添加到 firebase 中的列表?

javascript - iOS 上的 Chrome 中的 Facebook OAuth "Unsupported"

asp.net - 如何动态修补正在运行的ASP.NET应用程序?