在css加载完毕后执行后续代码

最近在写项目的framework,写个JQueryMessageBox的类,以使用jquery ui中的dialog()来显示消息框,为了使方法方便调用,便加入了自动判断页面是否加入了ui.js和ui.css,代码如下:

[javascript] view plaincopyprint?

  1. //如果没有包含ui.js,则引用
  2. if ($(‘script[src$=""jquery-ui-1.8.11.custom.min.js""]‘).length == 0) {{
  3. $(""<script src=‘/js/jquery-ui-1.8.11.custom.min.js‘ type=‘text/javascript‘ />"").appendTo(‘head‘);
  4. }}
  5. //如果没有加载css,则加载
  6. if ($(‘link[ref$=""jquery-ui-1.8.14.custom.css""]‘).length == 0) {{
  7. $(‘<link href=""/css/jquery-ui-1.8.14.custom.css"" rel=""stylesheet"" type=""text/css"" />‘).appendTo(‘head‘);
  8. //dialog() script
  9. }}

但CSS代码不会立即加载下来,于是在显示dialog的时候则不会有样式(在IE9下可以,因为在IE9下CSS即使后下载下来,也会重新绘制页面元素,而IE8则不会).解决此问题的方法,可以使用ajax,当css加载完毕后,再显示dialog,这样就可以带着样式显示出来了,代码如下:

[javascript] view plaincopyprint?

  1. if ($(‘link[ref$=""jquery-ui-1.8.14.custom.css""]‘).length == 0) {
  2. $.ajax({
  3. url: ‘/css/jquery-ui-1.8.14.custom.css‘,
  4. success: function(data) {
  5. //创建一个style元素,并追加到head中
  6. //替换其中images的路径
  7. $(‘<style type="text/css">‘ + data.replace(/url\(images/g, ‘url(/css/images‘) + ‘</style>‘).appendTo(‘head‘);
  8. //dialog() script;
  9. }
  10. });
  11. }
  12. else {
  13. //dialog() script;
  14. }
时间: 2024-08-07 16:45:03

在css加载完毕后执行后续代码的相关文章

图片加载完毕后执行JS代码

$("#img").load(function(){...}); 这是jquery提供的一个方法,但是在IE中会有BUG,IE8不支持,IE9以上刷新后也不会执行,只有强制刷新才执行,所以不能使用这个jquery提供的方法 应该使用: 只能通过JS的onload来触发事件,当然触发的事件代码中可以使用jquery代码(但是,IE8也有BUG,普通刷新的时候图片从缓存读入,读入速度比代码更快,导致onload代码不能运行,解决方法看继续往下看) document.getElementBy

页面图片加载完毕以后执行JS代码

// 案例列表页左右div等高 $(".case-list-cont img").each(function(idx,ele){ if (ele.complete==true) { var rightAdvHeight = $(".case-list-cont").find(".right-div").height(); var leftAdvHeight = $(".case-list-cont").find(".

两种方法实现在HTML页面加载完毕后运行某个js

两种方法实现在HTML页面加载完毕后运行某个js 这篇文章主要介绍了通过两种方法实现在HTML页面加载完毕后运行某个js,需要的朋友可以参考下 js方法: 复制代码 代码如下: <script type="text/javascript"> window.onload=function(){ var userName="xiaoming"; alert(userName); } </script> 以下为jQuery方法,需要引用jQuery

Android下设置ListView数据加载完成后执行layoutanimation

今天使用android的volley框架写了一个简单的网络天气获取的demo. 承载数据的空间是ListView 因为是网络加载,必然先要设置ListView的默认数据,我设置的就是那个Loading... 然后从网络获取到数据后,再解析,然后更新到adapter,然后notifyDataSetChanged更新数据到ListView. 可是ListView设置了layoutanimation,这样默认的ListView打开后那个Loading执行了动画,当网络数据加载完毕后, layoutan

window.onload在文档加载完成后执行

验证a .b两点疑惑: a.<script src="./main.js"></script>中的window.onload是在html全部加载完了才执行,还是其在html中所处位置之前的加载完就执行? b. <script src="./main.js"></script>中window.onload有和没有 的区别是什么? 结论: a. answer:在html全部加载完了才执行. b. answer:区别就是,w

PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题

PageSlider中CSS3动画在除首屏之外先加载页面后执行动画的问题,PageSlider中加入CSS3动画的话,默认只有首屏是从无到有执行动画,其他屏都是显示下页面再执行动画 这就造成其他屏的动画展示效果不好,解决方法,让所有屏的背景可见,但是只要当前屏的元素可见; 上代码: .page { width: 100%; height: 100%; -webkit-backface-visibility: hidden; -webkit-perspective: 1000; div, ul,

js中页面加载完成后执行的几种方式及执行顺序

在js和jquery使用中,经常使用到页面加载完成后执行某一方法.通过整理,大概是五种方式(其中有的只是书写方式不一样). 1:使用jQuery的$(function){}; 2:使用jquery的$(document).ready(function(){});前两者本质上没有区别,第1种是第2种的简写方式.两个是document加载完成后就执行方法. 3:使用jQuery的$(window).load(function(){}); 4:使用window.onload = function(){

如何实现加载DOM时执行js代码

有一些功能需求,需要在DOM载入时马上执行一些函数,但又不愿意仅为了这一个需求而引入整个JQuery库,于是就把jQuery的方法提取出来,单独使用了. 大家可以使用windows.onload事件,但onload在看来,就是页面上的东西(img,iframe等资源)全部都加载完毕后才能发生,如果页面内有大的图片的话,会在页面展现后好久时间后才执行.鸿运国际娱乐城 如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了.我们需要更快的方法.Firefox有DOMContentLoaded

ExtJS中关于分页加载数据后执行一个回调函数的问题

前几天,一个项目中有用到ExtJS.之前修改的时候,只是在Store Load的时候执行一个回调,这个会导致翻页的时候,没有执行这个回调,而这个回调做的恰好是一些数据的格式验证不可或缺的. 被这个问题困扰了很久,也查了很多的关于ExtJs Store的应用和API,最终找到了一个解决的办法,其实很简单,就是在Store里面添加一个load事件的监听. new Ext.data.Store({... listeners: { "load": function (store, operat