5

可能重复:
加载页面时运行函数

我的身体里有一个脚本,一个相对较长的脚本,我想把它放在一个单独的 .js 文件中,然后只在身体加载时调用函数,而不是将脚本放在正文中,但我不知道如何叫它。帮助?

脚本:

            <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>
4

3 回答 3

4

您可以<body onload="aFunction()">直接使用 HTML 正文声明,也可以使用jQuery做同样的事情,我发现它更具可读性:

$(document).ready(function() {
    aFunction();
});
// This will wait for the DOM (your HTML) to be loaded before executing aFunction

甚至做:

$(window).load(function () {
    aFunction(); 
});
// This will wait for every element in the page (including CSS, JS files ...) 
// to be loaded before executing aFunction

使用 jQuery 而不是旧版 Javascript 的另一个优点是您的代码可以在所有主要浏览器中使用。

于 2013-01-16T21:57:48.263 回答
3

创建一个新文件script.js,将所有脚本移入其中并将其添加到文档中:

<script type="text/javascript" src="script.js"></script>

然后在文件中使用 onload 事件:

window.onload = function () {
   all your code goes here.
}
于 2013-01-16T21:58:21.680 回答
2

由于您的脚本底部已经有一个 window.onload 分配并且该脚本当前可以正常工作,因此我认为如果您将它放在一个单独的文件中,然后用普通脚本标签代替当前代码。

因此,只需将脚本复制到其中,snowScript.js然后将这一行替换为当前代码:<script type="text/javascript" src="snowScript.js"></script>

于 2013-01-16T22:00:55.230 回答