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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 16:31:56  来源:igfitidea点击:

Call function on body load javascript?

javascriptonload

提问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.
}