如何让javascript在dom和css就绪而不是映像就绪时执行
我想在dom和css就绪时执行一些javascript, 但我不在乎图像(我倾向于懒散地加载图像)如何让javascript在dom和css就绪而不是映像就绪时执行,javascript,domready,Javascript,Domready,我想在dom和css就绪时执行一些javascript, 但我不在乎图像(我倾向于懒散地加载图像) 我知道如何检测dom就绪状态,但如何检测css就绪?您应该使用document.ready事件窗口。onLoad在所有图像和其他图像都已完全加载时激发 来源:除非显式使用javascript加载css文件,否则javascript无法判断是否加载了.css文件。以下是我将如何做后者: function dynamicallyLoadCss(fileName,callBackFunc){ v
我知道如何检测dom就绪状态,但如何检测css就绪?您应该使用
document.ready
事件<代码>窗口。onLoad在所有图像和其他图像都已完全加载时激发
来源:除非显式使用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.");
});
你需要像下面这样的东西。此函数在加载DOM后立即执行,但不会加载整个页面。页面加载和DOM加载之间有很大的区别
$(document).ready(
function(){
alert('DOM is now loaded and can be manipulated .');
}
);
这将是使用JS onload和首先在顶部加载所有CSS的组合。如果在加载任何脚本之前加载所有CSS,则保证加载所有CSS;在加载时与JS结合,您将得到您想要的 上传页面标题中的所有CSS,然后再上传任何JavaScript 最好的做法是将JavaScript放在页面底部的标签前面,以确保所有元素都首先被完全加载
$(document).ready(function(){
// now do your actions
});
这里的人发布了许多使用的示例,但他们没有提到或演示为了使用它,您需要包括jQuery 您可以使用直接的JavaScript来完成您想要的任务——但是不同浏览器的技术不同,而jQuery在规范化这些差异方面总是做得很好——就我个人而言,我是一个jQuery人。可能永远都是:) 在HTML文档的
末尾,包括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>
虽然JavaScript提供了在呈现页面时执行代码的加载事件,但在完全接收到所有资产(如图像)之前,不会触发此事件。在大多数情况下,只要完全构建DOM层次结构,就可以运行脚本。传递给.ready()的处理程序保证在DOM就绪后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置使用依赖CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要。
我为您强调了文档中的引用,因为您提到希望首先加载CSS。从外观上看,您只需确保您的
标记放置在jQuery代码上方的
部分)
快乐编码//追逐
如果您不能使用$(document).ready技术,您可以在body标记关闭之前将脚本代码放在正确的位置
<body>
html code....
....
<script>
var executeAfterDOMReady;
....
</script>
</body>
html代码。。。。
....
var executeAfterDOMReady;
....
至于CSS,您可以通过jQuery调用您的CSS文件:
$("<link/>", { rel: "stylesheet", type: "text/css", href: "your.css"}).appendTo("head");
$(“”,{rel:“样式表”,键入:“text/css”,href:“your.css”});
甚至可以进行Ajax调用:
$.ajax({
url:"your.css",
dataType:"script",
success:function(data){
$("head").append("<style>" + data + "</style>");
}
});
$.ajax({
url:“你的.css”,
数据类型:“脚本”,
成功:功能(数据){
$(“head”)。追加(“+data+”);
}
});
在您完成标准javascript处理后,使用javascrpt修改dom以显示您的图像是一个选项吗?@Kafuka:不,我想我的图像就在那里,等待lazyload。不需要使用javascipt来修改我如何知道动态插入的css文件已下载完成?一旦dynamicallyLocadCss函数运行,您的css应该被加载。我将编辑该函数,使其也具有回调。
$.ajax({
url:"your.css",
dataType:"script",
success:function(data){
$("head").append("<style>" + data + "</style>");
}
});