如何在呈现HTML时添加处理程序以执行?

时间:2012-08-15 15:04:08

标签: javascript jquery html client-side

我正在使用JavaScriptjQuery中编写一个单页的网络应用程序。我将我的JavaScript源和jQuery添加到HTML页面,并在页面完全呈现时注册我要调用的函数。

<script type="text/javascript" src="lib/jquery-1.8.0.js"></script>
<script type="text/javascript" src="src/myapp.js"></script>
<script type="text/javascript">$(MyApp.onReady)</script>

它有效,但我不喜欢在HTML中包含代码

现在我想知道我是否可以摆脱最后一行。是否绝对有必要在HTML中调用$(MyApp.onReady)

6 个答案:

答案 0 :(得分:2)

您可以回复document.ready文件中的myapp.js。这将确保DOM树可以使用:

$(document).ready(function () {
    // do whatever you want here, confident that the DOM is loaded
});

如果您需要等到整个页面在浏览器中呈现(图像等),您可以响应加载事件:

$(window).load(function() {
    // everything is rendered in the browser
});

您通常不需要等到load,我建议您在使用第二个代码段之前尝试第一个代码段。

答案 1 :(得分:1)

当完成html控件上的所有渲染时,会调用

$(document).ready,您可以将代码放在此方法中或在其中调用您的方法

$(document).ready(function(){
    //your code here
    //$(MyApp.onReady) 
});

答案 2 :(得分:1)

您可以将$( MyApp.onReady );行放在myapp.js内。您需要注意的是在加载文件之前加载jQuery

答案 3 :(得分:1)

您可以将此代码添加到myapp.js文件的尾部,如:

/* myapp.js */
var MyApp = (function(app, $) {
    // your logic...
    // defining app.onReady function...
    $(function() {
        app.onReady();
    });

    return app;
})(MyApp || {}, jQuery);

答案 4 :(得分:1)

您需要在某个地方拨打MyApp.onReady()。如果您将访问DOM(您可能会访问),是的,您必须等到DOM处理完毕。您可以通过在结束document.ready标记之前将MyApp.onready()置于script权限中来避免使用body。到那时,DOM已经被解析了。但是,如果您不访问DOM,则可以随时随地MyApp.onReady()

答案 5 :(得分:1)

看看这个问题:Running javascript after page is fully rendered

基本上,看起来你想要将一个函数设置为window.onload,这将在页面渲染后运行。由于我看不到你的myapp.js,我不知道onReady函数在那里做了什么。是否保留该行取决于该函数的作用。正如Grampa所说,你可以将这一行放在javascript文件中。