Javascript 页面加载后移到div&引用;onmouseover“;工作,但;窗口。仅加载“;不
我有一个动态生成的页面(和div),我需要在页面加载后立即滚动到特定的div。这个代码有什么不对劲的地方是 当您在下面的“按钮”代码上运行鼠标时(或Javascript 页面加载后移到div&引用;onmouseover“;工作,但;窗口。仅加载“;不,javascript,onclick,dojo,dom-events,onmouseover,Javascript,Onclick,Dojo,Dom Events,Onmouseover,我有一个动态生成的页面(和div),我需要在页面加载后立即滚动到特定的div。这个代码有什么不对劲的地方是 当您在下面的“按钮”代码上运行鼠标时(或onclick),它可以完美地工作。它完美地执行了rolldownTo功能。但是,当我尝试使用window.onload指定相同的操作时,什么也没有发生。我已经包括了“按钮”代码和下面的窗口。onload <html> <head> <title>Help</title> <script LAN
onclick
),它可以完美地工作。它完美地执行了rolldownTo
功能。但是,当我尝试使用window.onload指定相同的操作时,
什么也没有发生。我已经包括了“按钮”代码和下面的窗口。onload
<html>
<head>
<title>Help</title>
<script LANGUAGE="JavaScript1.2" type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js"
djConfig="usePlainJson : true, parseOnLoad: true">
</script>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.TabContainer");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dojo.window");
function rolldownTo(my_anchor){
dojo.window.scrollIntoView(my_anchor);
}
window.onload=rolldownTo('car_help');
</script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs /dojo/1.5/dijit/themes/claro/claro.css"/>
</head>
<body class="claro">
<div dojoType="dijit.layout.BorderContainer" style="width: 100%; height: 100%;">
<div dojoType="dijit.layout.TabContainer" region="center">
<div dojoType="dijit.layout.ContentPane" title="CAR HELP" selected=true>
<button type=button id=button1 onmouseover="rolldownTo('car_help');">
scroll to car_help
</button>
........
LOTS OF DIVS LIVE IN THIS DIV, INCLUDING MY TARGET "car_help"
........
</div>
<div dojoType="dijit.layout.ContentPane" title="BIKE HELP" selected=false>
........
........
</div>
</div>
</div>
<script language="JavaScript1.2" type="text/javascript">
.... LOTS OF CODE THAT GENERATES CONTENT FOR THE DIVS ABOVE
</script>
</body>
</html>
帮助
require(“dojo.parser”);
require(“dijit.form.FilteringSelect”);
require(“dijit.form.TextBox”);
require(“dijit.layout.ContentPane”);
require(“dijit.layout.BorderContainer”);
require(“dijit.layout.TabContainer”);
require(“dojo.data.ItemFileReadStore”);
dojo.require(“dojo.window”);
函数rolldownTo(我的锚){
dojo.window.scrollIntoView(我的锚);
}
window.onload=rolldownTo('car_help');
滚动至汽车帮助
........
很多剧组都住在这个剧组,包括我的目标“car\u help”
........
........
........
.... 为上面的div生成内容的大量代码
有人知道为什么像
onmouseover
或onclick
这样的Javascript事件可以很好地工作,但是window.onload
不能工作吗?页面加载并不意味着DOM树已经完全初始化,这意味着除非树完成工作,否则脚本无法移动div,您必须使用javascript事件DOMContentLoaded等待它完成
在dojo中,有一个可以调用的函数,它等待浏览器完成DOM树,您可以将其用作:
dojo.addOnLoad(function(){rolldownTo('car_help');});
我希望这对你有用
致意
NiL页面加载并不意味着DOM树已完全初始化,这意味着您的脚本无法移动div,除非树完成工作,您必须使用javascript事件DOMContentLoaded等待它完成 在dojo中,有一个可以调用的函数,它等待浏览器完成DOM树,您可以将其用作:
dojo.addOnLoad(function(){rolldownTo('car_help');});
我希望这对你有用
致意
无您的问题是这一行:
window.onload=rolldownTo('car_help');
您没有将函数rolldownTo
指定为onload
事件的回调,而是执行该函数并指定返回值,在本例中是未定义的
您需要使用匿名函数包装调用以使其正常工作:
window.onload = function(){ rolldownTo('car_help'); };
现在,匿名函数将被onload
事件调用,然后调用rolldownTo
问题到此为止,正如NiL已经指出的一半(
onload
在domload之后激发),您可以使用dojo.addOnLoad
而不是这里的window.onload
,但是出于上述原因,您仍然必须使用匿名函数。您的问题是这一行:
window.onload=rolldownTo('car_help');
您没有将函数rolldownTo
指定为onload
事件的回调,而是执行该函数并指定返回值,在本例中是未定义的
您需要使用匿名函数包装调用以使其正常工作:
window.onload = function(){ rolldownTo('car_help'); };
现在,匿名函数将被onload
事件调用,然后调用rolldownTo
问题到此为止,正如NiL已经指出的一半(
onload
在domload之后激发),您可以在这里使用dojo.addOnLoad
而不是window.onload
,但是,出于上述原因,您仍然必须使用匿名函数。您可能已经尝试过,但是您尝试过在页面加载后将onload分配移动到页面底部。这样您就知道内容已加载。只是一个想法。您可能已经尝试过了,但您是否尝试过在页面加载后将onload分配移动到页面底部。这样您就知道内容已加载。只是一个想法。这个评论提供了一个很好的解决方案,但解释错误。DOMContentLoaded实际上在window.onload之前触发-后者等待图像等完成,而DOMContentLoaded只等待DOM树准备就绪dojo.addOnLoad
(在1.4+中也是dojo.ready
)等待在支持它的浏览器中加载domcontentload(不是IE),否则等待window.onload。Ivo实际上正确地识别了这个问题,但无论如何,最好是完全避免window.onload而支持dojo.addOnLoad
,因为我不确定它是否会干扰dojo自己的加载逻辑。这个注释提供了一个很好的解决方案,但解释错误。DOMContentLoaded实际上在window.onload之前触发-后者等待图像等完成,而DOMContentLoaded只等待DOM树准备就绪dojo.addOnLoad
(在1.4+中也是dojo.ready
)等待在支持它的浏览器中加载domcontentload(不是IE),否则等待window.onload。Ivo实际上正确地识别了这个问题,但无论如何,最好是完全避免window.onload而支持dojo.addOnLoad
,因为我不确定它是否会干扰dojo自己的加载程序逻辑。