哪个得到更广泛的支持:window.onload
或document.onload
?
有什么区别
$(document).ready(function(){
//my code here
});
Run Code Online (Sandbox Code Playgroud)
和
$(window).load(function(){
//my code here
});
Run Code Online (Sandbox Code Playgroud)
我想确保:
$(document).ready(function(){
})
Run Code Online (Sandbox Code Playgroud)
和
$(function(){
});
Run Code Online (Sandbox Code Playgroud)
和
jQuery(document).ready(function(){
});
Run Code Online (Sandbox Code Playgroud)
是相同的.
你能告诉我他们之间有什么不同和相似之处吗?
我想使用格式验证输入的日期格式mm/dd/yyyy
.
我在一个站点中找到了以下代码然后使用它但它不起作用:
function isDate(ExpiryDate) {
var objDate, // date object initialized from the ExpiryDate string
mSeconds, // ExpiryDate in milliseconds
day, // day
month, // month
year; // year
// date length should be 10 characters (no more no less)
if (ExpiryDate.length !== 10) {
return false;
}
// third and sixth character should be '/'
if (ExpiryDate.substring(2, 3) !== '/' || ExpiryDate.substring(5, 6) !== '/') {
return false;
}
// extract month, day and year …
Run Code Online (Sandbox Code Playgroud) 我们有一个Rails应用程序,我们在html头中包含我们的应用程序依赖项application.js
:
//= require jquery
//= require analytics
// other stuff...
Run Code Online (Sandbox Code Playgroud)
然后在单个页面上,我们在页面底部有一个脚本标记,用于analytics
:
<script>
analytics.track('on that awesome page');
</script>
Run Code Online (Sandbox Code Playgroud)
这通常很好,但偶尔我们会看到错误analytics is not defined
,最近一次是在Chrome 43上.因为所有内容都应该同步加载,这似乎应该是开箱即用,但我将脚本更改为:
<script>
$(document).ready(function () {
analytics.track('on that awesome page');
});
</script>
Run Code Online (Sandbox Code Playgroud)
而现在我们偶尔会看到$ is not defined
.我们没有看到来自同一IP的任何其他错误,否则我会怀疑出现了问题application.js
.任何其他想法为什么它可能会破裂?您可以在此处查看示例页面.
完整的application.js
:
// Polyfills
//= require es5-shim/es5-shim
//= require es5-shim/es5-sham
//= require polyfills
//
// Third party plugins
//= require isMobile/isMobile
//= require jquery
//
//= require jquery.ui.autocomplete
//= require jquery.ui.dialog …
Run Code Online (Sandbox Code Playgroud) 这可能是一个新手问题,但我已经搜索并尝试了很多.window.onload
和之间的区别是什么$window.load
?
大约有之间的差异伟大的答案在window.onload和的document.ready和document.onload VS在window.onload等,但我还没有发现提到双方的资源或物品.onload
和.load
.
jQuery文档说.load是
"这种方法是.on("load",handler)的快捷方式."
我试图把两者window.onload
和window.load
网页,看到它获取先打上,或者如果他们都被击中,但他们似乎相互干扰.
(window).onload(function(){
alert("window onload - executes when the window's load event fires.");
}
$(document).ready(function(){
alert("document is ready - executes when HTML-Document is loaded and DOM is ready");
}
$(window).load(function(){
alert("window is loaded - executes when complete page is fully loaded, including all frames, objects and images");
}
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别,为什么你会使用另一个呢?
我使用以下代码:
<html>
<head>
<title></title>
<script src="jquery-3.2.0.js"></script>
</head>
<body>
<script type="text/javascript">
$(window).load(function () {
alert('Window loaded');
});
$(document).ready(function () {
alert('DOM Loaded and ready');
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它如此简单,但我收到了错误
"Object doesn't support property or method 'indexOf'".
Run Code Online (Sandbox Code Playgroud)
我正在使用Internet Explorer
它是什么原因?
在我的网站上,我有一个jquery函数,一旦页面加载就从另一个(安全的)服务器检索数据.使用jsonp调用我当前在文档就绪事件后加载此数据:
<script type="text/javascript">
$(document).ready(function () {
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
initPage(data);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我不喜欢上面的调用,是jsonp实际上可以在文档就绪事件之前被执行,从而减慢页面加载速度.因此,如果我在页面中包含jquery(即不使用脚本标记引用),则以下代码工作正常并且页面加载速度更快:
<script type="text/javascript">
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
$(document).ready(function () {
initPage(data);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是在每个页面中包含jquery是一个23k的开销,我想避免.我如何测试是否已加载jquery并且只有在加载jquery时才执行initPage()函数?
编辑:更确切地说,如果加载了jquery,我需要反复检查,然后执行该事件.计时器工作可能是解决方案..
解决方案:我已经创建了一个执行jquery检查的preinit.我的页面加载速度不快:).感谢大家!
function preInit()
{
// wait until jquery is loeaded
if (!(typeof jQuery === 'function')) {
window.setTimeout(function () {
//console.log(count++);
preInit();
}, 10); // Try again every 10 ms..
return;
}
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?',
function (data) {
$(document).ready(function () {
initPage(data);
});
});
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我为什么下一页加载时不会触发警报?如果我使用window.onload
而不是document.onload
它的工作.为什么会出现这种差异?
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
document.onload = function() {
alert('Test');
}
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我目前有一个javascript文件,我在我的视图页面中调用,我可以在其中显示我的数据信息.同时,我有一段javascript,一旦点击图像就会显示一个菜单栏.这个脚本是在页面完全加载之前运行的,或者因为它不起作用而运行.在所有其他脚本完成运行并加载页面后,如何使我的javascript采取行动?这是我尝试但不能正常工作的
使用Javascript
(function ($) {
.... lines to load view page with data
$(document).ready(function () {
$('figure').on('click', function (event) {
$(event.currentTarget).toggleClass('open');
});
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud) 假设我要动态地将一些内容附加到页面,它涉及一些HTML和一些Javascript(通过添加更多的脚本标记).
我怎么知道一切都准备就绪(就像在页面加载时我会用jQuery $(..))?
或者,在追加操作完成后继续进行是否正常?
我知道这些状态之间的基本区别,但我们的一个项目中出现了一个奇怪的问题
jQuery(document).ready(function () {
console.log('Dom is ready');
jQuery(document).ready(function () {
console.log('Inner Dom ready');
});
});
Run Code Online (Sandbox Code Playgroud)
结果: -
Dom is ready
Inner Dom ready
Run Code Online (Sandbox Code Playgroud)
现在,无论什么时候,只要我打电话document.ready()
,它就会很好,它会执行它的处理程序.
但是如果你看看这个
jQuery(window).load(function () {
console.log('Window Loaded');
jQuery(window).load(function () {
console.log('Inner window load');
});
});
Run Code Online (Sandbox Code Playgroud)
结果: -
Window Loaded
Run Code Online (Sandbox Code Playgroud)
为什么内部窗口加载永远不会执行其处理程序,即使窗口已经加载.
感谢您的意见和解答,但我很想知道它们是如何在内部工作的,我同意jQuery(窗口).load()事件只触发一次因此没有任何其他加载事件处理程序执行的可能性然后为什么这个规则是不适用于jQuery(document).ready().它是否设置某种旗帜或某种东西,并在每次调用它时进行检查.
我在不同的 js 文件中声明全局变量,然后在不同的文件中使用。在开始执行之前,我需要确保所有 js 都已加载。我也在尝试使用 require.js 转向模块化 js。但现在我需要一个快速的解决方案。在 .js 下运行我的 js 代码安全 $().ready()
吗?我猜脚本标签将被同步加载,因此在所有脚本都加载完毕之前,DOM 不会准备好。
或者确实$(window).load()
保证所有脚本文件都已加载。
谢谢!