我正在使用JavaScript
在jQuery
中编写一个单页的网络应用程序。我将我的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)
?
答案 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)
$(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文件中。