Javascript 在身体加载javascript上调用函数?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14368583/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Call function on body load javascript?
提问by Josue Espinosa
Possible Duplicate:
run function when page is loaded
可能的重复:
加载页面时运行函数
I have a script inside of my body, a relatively long script, which i would like to put in a seperate .js file, then just call the function on body load instead of having the script in the body but i do not know how to call it. Help?
我的身体内部有一个脚本,一个相对较长的脚本,我想把它放在一个单独的 .js 文件中,然后只在身体加载时调用该函数,而不是将脚本放在正文中,但我不知道如何称它为。帮助?
Script:
脚本:
<script type="text/javascript">
// Set the number of snowflakes (more than 30 - 40 not recommended)
var snowmax = 35
// Set the colors for the snow. Add as many colors as you like
var snowcolor = new Array("#ddddff", "#ccccdd", "#f3f3f3", "#f0ffff")
// Set the fonts, that create the snowflakes. Add as many fonts as you like
var snowtype = new Array("Times", "Arial", "Times", "Verdana")
// Set the letter that creates your snowflake (recommended: * )
var snowletter = "*"
// Set the speed of sinking (recommended values range from 0.3 to 2)
var sinkspeed = 0.6
// Set the maximum-size of your snowflakes
var snowmaxsize = 30
// Set the minimal-size of your snowflakes
var snowminsize = 8
// Set the snowing-zone
// Set 1 for all-over-snowing, set 2 for left-side-snowing
// Set 3 for center-snowing, set 4 for right-side-snowing
var snowingzone = 1
///////////////////////////////////////////////////////////////////////////
// CONFIGURATION ENDS HERE
///////////////////////////////////////////////////////////////////////////
// Do not edit below this line
var snow = new Array()
var marginbottom
var marginright
var timer
var i_snow = 0
var x_mv = new Array();
var crds = new Array();
var lftrght = new Array();
var browserinfos = navigator.userAgent
var ie5 = document.all && document.getElementById && !browserinfos.match(/Opera/)
var ns6 = document.getElementById && !document.all
var opera = browserinfos.match(/Opera/)
var browserok = ie5 || ns6 || opera
function randommaker(range) {
rand = Math.floor(range * Math.random())
return rand
}
function initsnow() {
if (ie5 || opera) {
marginbottom = document.body.scrollHeight
marginright = document.body.clientWidth - 15
} else if (ns6) {
marginbottom = document.body.scrollHeight
marginright = window.innerWidth - 15
}
var snowsizerange = snowmaxsize - snowminsize
for (i = 0; i <= snowmax; i++) {
crds[i] = 0;
lftrght[i] = Math.random() * 15;
x_mv[i] = 0.03 + Math.random() / 10;
snow[i] = document.getElementById("s" + i)
snow[i].style.fontFamily = snowtype[randommaker(snowtype.length)]
snow[i].size = randommaker(snowsizerange) + snowminsize
snow[i].style.fontSize = snow[i].size + 'px';
snow[i].style.color = snowcolor[randommaker(snowcolor.length)]
snow[i].style.zIndex = -1;
snow[i].sink = sinkspeed * snow[i].size / 5
if (snowingzone == 1) {
snow[i].posx = randommaker(marginright - snow[i].size)
}
if (snowingzone == 2) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size)
}
if (snowingzone == 3) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4
}
if (snowingzone == 4) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2
}
snow[i].posy = randommaker(2 * marginbottom - marginbottom - 2 * snow[i].size)
snow[i].style.left = snow[i].posx + 'px';
snow[i].style.top = snow[i].posy + 'px';
}
movesnow()
}
function movesnow() {
for (i = 0; i <= snowmax; i++) {
crds[i] += x_mv[i];
snow[i].posy += snow[i].sink
snow[i].style.left = snow[i].posx + lftrght[i] * Math.sin(crds[i]) + 'px';
snow[i].style.top = snow[i].posy + 'px';
if (snow[i].posy >= marginbottom - 2 * snow[i].size || parseInt(snow[i].style.left) > (marginright - 3 * lftrght[i])) {
if (snowingzone == 1) {
snow[i].posx = randommaker(marginright - snow[i].size)
}
if (snowingzone == 2) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size)
}
if (snowingzone == 3) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4
}
if (snowingzone == 4) {
snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2
}
snow[i].posy = 0
}
}
var timer = setTimeout("movesnow()", 50)
}
for (i = 0; i <= snowmax; i++) {
document.write("<span id='s" + i + "' style='position:absolute;top:-" + snowmaxsize + "'>" + snowletter + "</span>")
}
if (browserok) {
window.onload = initsnow
}
</script>
采纳答案by Coin_op
As you already have a window.onload assignment at the bottom of your script and the script currently works, I would have thought it would work fine if you just put it in a separate file, then include it with normal script tags in place of the current code.
由于您的脚本底部已经有一个 window.onload 分配并且该脚本当前可以正常工作,我认为如果您只是将它放在一个单独的文件中,然后将其包含在普通脚本标签中代替当前代码。
So just copy the script into snowScript.jsthen put this line in place of the current code: <script type="text/javascript" src="snowScript.js"></script>
因此,只需将脚本复制到其中,snowScript.js然后将此行替换为当前代码:<script type="text/javascript" src="snowScript.js"></script>
回答by Halim Qarroum
You can use <body onload="aFunction()">directly using HTML body declaration, or you can do the same thing using jQuerywhich I find more readable :
您可以<body onload="aFunction()">直接使用 HTML 主体声明,或者您可以使用jQuery做同样的事情,我发现它更具可读性:
$(document).ready(function() {
aFunction();
});
// This will wait for the DOM (your HTML) to be loaded before executing aFunction
or even doing :
甚至做:
$(window).load(function () {
aFunction();
});
// This will wait for every element in the page (including CSS, JS files ...)
// to be loaded before executing aFunction
Another advantage of using jQuery instead of legacy Javascript is that your code will be usable accross all the major browsers.
使用 jQuery 代替旧版 Javascript 的另一个优点是您的代码可以在所有主要浏览器中使用。
回答by Ibu
Create a new file script.jsmove all your script in it and add it to the document:
创建一个新文件,script.js将所有脚本移入其中并将其添加到文档中:
<script type="text/javascript" src="script.js"></script>
Then in the file use the onload event:
然后在文件中使用 onload 事件:
window.onload = function () {
all your code goes here.
}

