我想在 dom 和 css 准备好时执行一些 javascript,但我不关心图像(我倾向于延迟加载图像)
我知道如何检测 dom 就绪状态,但如何检测 css 就绪?
我想在 dom 和 css 准备好时执行一些 javascript,但我不关心图像(我倾向于延迟加载图像)
我知道如何检测 dom 就绪状态,但如何检测 css 就绪?
您应该使用该document.ready
事件。window.onLoad
当所有图像和其他图像完全加载时触发。
在页面标题中和任何 JavaScript 之前上传所有 CSS。
将 JavaScript 放在标签之前的页面底部也是最佳实践,以确保首先完全加载所有元素。
$(document).ready(function(){
// now do your actions
});
你需要像下面这样的东西。此函数在 DOM 加载后立即执行,但不是整个页面。页面加载和 DOM 加载之间有很多区别。
$(document).ready(
function(){
alert('DOM is now loaded and can be manipulated .');
}
);
这将是使用 JS onload 和首先加载所有 CSS 的组合。如果在加载任何脚本之前加载所有 CSS,则可以保证加载所有 CSS;在加载时结合 JS,你会得到你想要的。
如果你不能使用$(document).ready技术,你可以把你的脚本代码放在 body 标签关闭之前。
<body>
html code....
....
<script>
var executeAfterDOMReady;
....
</script>
</body>
至于 CSS,你可以通过 jQuery 调用你的 CSS 文件:
$("<link/>", { rel: "stylesheet", type: "text/css", href: "your.css"}).appendTo("head");
甚至进行 Ajax 调用:
$.ajax({
url:"your.css",
dataType:"script",
success:function(data){
$("head").append("<style>" + data + "</style>");
}
});
这里的人们发布了许多使用jQuery 的 DOM 就绪功能的示例——但他们没有提及或演示为了使用它,您需要包含 jQuery。
您可以直接使用 JavaScript 来完成您想要的工作——但该技术因浏览器而异,而 jQuery 总是在为您规范这些差异方面做得很好——我个人是一个 jQuery 人。可能永远都是:)
在您的 HTML 文档的末尾<head>
,包含 jQuery 库,然后是您的代码 :)
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(function(){
console.log("DOM is Ready! Images haven't finished loading yet!");
});
</script>
jQuery.ready()
函数的使用有多种形式。就个人而言,我喜欢上面的方法。下面这两个,似乎是最官方宽恕的。
$(document).ready(function(){ console.log("DOM Ready!"); });
$(function(){ console.log("DOM Ready!"); });
关于 jQuery 的文档.ready()
有这样的说法:
虽然 JavaScript 在页面呈现时提供了用于执行代码的加载事件,但在完全接收到所有资产(例如图像)之前,不会触发此事件。在大多数情况下,只要完全构建了 DOM 层次结构,就可以运行脚本。传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序和运行其他 jQuery 代码的最佳位置。当使用依赖 CSS 样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素很重要。
我为您突出显示了文档中的引用,因为您提到您希望首先加载 CSS。从表面上看,你只需要确保你的<link rel="stylesheet" href="style.css" />
标签放在你的 jQuery 代码上面<head>
的部分:)
快乐编码!//追赶
除非您使用 javascript 显式加载 css 文件,否则 javascript 无法判断您的 .css 文件是否已加载。这是我将如何做后者:
function dynamicallyLoadCss(fileName,callBackFunc){
var fileRef=document.createElement("link");
fileRef.setAttribute("rel", "stylesheet");
fileRef.setAttribute("type", "text/css");
fileRef.setAttribute("href", filename);
if(callBackFunc) {
callBackFunc();
}
}
//Call the function like so...
dynamicallyLoadCss("mystyles.css", function() {
console.log("Our hamsters have finished loading your mystyles.css file.");
});