linux php python mysql jquery JavaScript 学习之窗
标签类目:JavaScript

国外几款主流的lightbox 技术

Thickbox – 基于 jQuery,支持 AJAX,轻量级的而且比较高效。可以在 lightbox 中使用图片或 HTML。大小约为 40k,目前还可作为 WordPress 的插件使用。

GreyBox – 创建 iframe 的弹出界面,可使用图片、HTML 及 URL,大小约为 20k。

GreyBox Redux – 基于 jQuery,比 GreyBox 更轻。

Lightbox v2.0 – 最初是为了显示图片设计的,使用了 prototype 和 sciptaculous,所以有些沉重,但对于图片来说很好用。

Lightbox with moo.fx – 基于 prototype,但只能用于图片。

Lightbox Gone Wild – modal 模式窗口的 lightbox,可使用 html、表单及图片,也是基于 prototype 的,所以有一些 heavy。

Multi-faceted LIghtbox – 又一个基于 prototype 的,不过这个为各种可用于 lightbox 的数据类型提供了选项。

Leightbox – 和 Lightbox Gone Wild 很相似,只是 Leightbox 以 html 方式存放内容,所以可以被搜索引擎索引到。

xilinus – 使用简单,基于 prototype,很容易定制,可使用多种内容选项。

Lightbox Plus – 可以自动根据窗口的大小缩放图片。

Suckerfish Hover Lighbox – 和传统的 lightbox 不一样,它在打开 lightbox 的时候,还可以点击访问页面上的其它元素。

Litebox – 这是 Lightbox 的另一个版本,代码量减少了,使用了 moo.fx 和 prototype-lite,如果页面需要减肥的话,可以选择这个。

LITBox – 使用类写的 lightbox,所以可以创建多个对象实例,并且单独进行控制。基于 Thickbox。

动态加载CSS文件的方法

如果你不想每次都改动css文件,而是像淘宝,阿里妈妈那样做动态的CSS,那样你每个历史版本的css都将在网站上面,随时都可以用。

如果你有很多关联的CSS文件要一起加载,或者想动态的加载不同的CSS文件,那么下面的方法你一定对你有帮助。

第一种:一般用在外部CSS文件中加载必须的文件 @import url(style.css);/*只能用在CSS文件中或者style标签中*/

第二种:简单的在页面中加载一个外部CSS文件 document.createStyleSheet(cssFile);

第三种:用createElement方法创建CSS的Link标签 var head = document.getElementsByTagName(’HEAD’).item(0); var style = document.createElement(’link’); style.href = ’style.css’; style.rel = ’stylesheet’ style.type = ‘text/css’; head.appendChild(style);

 

下面是JavaScript的一个动态加载CSS的函数实例。 测试一下就知道了。

function loadJs(file){
    var scriptTag = document.getElementById(’loadScript’);
    var head = document.getElementsByTagName(’head’).item(0);
    if(scriptTag) head.removeChild(scriptTag);
    script = document.createElement(’script’);
    script.src = "../js/mi_"+file+".js";
    script.type = ‘text/javascript’;
    script.id = ‘loadScript’;
    head.appendChild(script);
}

function loadCss(file){
    var cssTag = document.getElementById(’loadCss’);
    var head = document.getElementsByTagName(’head’).item(0);
    if(cssTag) head.removeChild(cssTag);
    css = document.createElement(’link’);
    css.href = "../css/mi_"+file+".css";
    css.rel = ’stylesheet’;
    css.type = ‘text/css’;
    css.id = ‘loadCss’;
    head.appendChild(css);
}

 

 

 

再加一个别人的js脚本。

 

/**
 * dynamic-style.js
 * 作者: 不详

 * 时间: 2006 年 11 月 26 日
 */
( function() {
var drv = {}; window.Driver = drv;

if(document.all) { // For IE
    drv.XMLHttpRequest = function() {
        var xmlhttp = null;
        /*@cc_on @*/
        /*@if (@_jscript_version >= 5)
        try    { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (e) {
            try    { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (E) { xmlhttp = false; } }
            @end @*/
        return xmlhttp;
    };

    window.DynamicStyle = function(s) {
        var uid = __push__(s);
        document.createStyleSheet(’"’ + uid + ‘");’);
    };

    window.__tmp__ = {};
    window.__push__ = function(s) {
        var uid = "_" + Math.ceil(Math.random() * 16777216) + "_" + (new Date()).getTime();
        window.__tmp__[uid] = s;
        return uid;
    };
    window.__pop__ = function(uid) {
        var s = window.__tmp__[uid];
        window.__tmp__[uid] = undefined;
        return s
    };

} else { // For Gecko
    drv.XMLHttpRequest = function() {
        return xmlhttp = new XMLHttpRequest();
    };

    window.DynamicStyle = function(s) {
        var d = document.createElement(’STYLE’); d.type = ‘text/css’;
        document.body.appendChild(d);
        d.innerHTML = s;
    };
} // Driver End

window.LazyLoadStyle = function(url) {
    var xh = Driver.XMLHttpRequest();
    xh.onreadystatechange = function() {
        if(xh.readyState == 4) {
            if(xh.status == 200) {
                DynamicStyle(xh.responseText);
            } else {
                alert(’糟糕, 下载失败!’);
            }
        }
    };
    xh.open(’GET’, url, true); xh.send(null);
};

} )();

今天准备要好好学学JavaScript了,一边学一边做个记录.

好多页面的设计都需要JavaScript来完成相应的功能, css虽然强大,但是没有JavaScript  的页面还是不行.  呵呵.

 

 

到现在还不能自己写JavaScript,我决定要好好看看,http://www.w3school.com.cn 的教程了,顺便做个学习笔记在我的博客里面!

 

 

呵呵!  事先申明:JavaScript我纯属初学,接下来的所有JavaScript的学习资料,将大部分出自http://www.w3school.com.cn, 我只是做适合我自己的整理,与相应的心得. JavaScript教程版权 所有权规原作者所有.

转载一个让插入到 innerHTML 中的 script运行的JS代码

    先说说这个js的作用吧, 做站的过程中,我们无疑都会放一些广告,  Google ads  baidu ads  alimama ads …  广告联盟都是以js方式提供的广告代码, 我们在布局网站的时候,就遇到一个问题了,JavaScript的加载速度比我们服务器端的asp  .net  php 等文件的加载速度慢一些,比html静态文件就更慢了, 但是往往一个广告 或许他又在正文之前, 按照浏览器的解析顺序,浏览器会先加载这个js 加载完毕再来加载我们的内容,这样似乎对用户体验并不好,如何让浏览器先加载内容 再加载广告呢!  这个解决方法研究很久,一直没有结果, 我自己弄的一个,只支持ie浏览器,在火狐下面就无法加载那个js了. 也是用的innerhtml技术  我的那个代码简单些,当然功能也是垃圾多了.呵呵.

     

    下面我们就看看http://www.coolcode.cn/的站长是怎么做的.  

    先看看innerhtml.js这个文件.  我也不是很懂这个js,就无法做什么说明了, 凑合着用吧. 呵呵.  浏览器兼容是没有问题的.

     

  1. /* innerhtml.js  
  2.  * Copyright Ma Bingyao <andot@ujn.edu.cn>  
  3.  * Version: 1.9  
  4.  * LastModified: 2006-06-04  
  5.  * This library is free.  You can redistribute it and/or modify it.  
  6.  * http://www.coolcode.cn/?p=117  
  7.  */  
  8.   
  9. var global_html_pool = [];   
  10. var global_script_pool = [];   
  11. var global_script_src_pool = [];   
  12. var global_lock_pool = [];   
  13. var innerhtml_lock = null;   
  14. var document_buffer = "";   
  15.   
  16. function set_innerHTML(obj_id, html, time) {   
  17.     if (innerhtml_lock == null) {   
  18.         innerhtml_lock = obj_id;   
  19.     }   
  20.     else if (typeof(time) == "undefined") {   
  21.         global_lock_pool[obj_id + "_html"] = html;   
  22.         window.setTimeout("set_innerHTML(’" + obj_id + "’, global_lock_pool['" + obj_id + "_html']);", 10);   
  23.         return;   
  24.     }   
  25.     else if (innerhtml_lock != obj_id) {   
  26.         global_lock_pool[obj_id + "_html"] = html;   
  27.         window.setTimeout("set_innerHTML(’" + obj_id + "’, global_lock_pool['" + obj_id + "_html'], " + time + ");", 10);   
  28.         return;   
  29.     }   
  30.   
  31.     function get_script_id() {   
  32.         return "script_" + (new Date()).getTime().toString(36)   
  33.           + Math.floor(Math.random() * 100000000).toString(36);   
  34.     }   
  35.   
  36.     document_buffer = "";   
  37.   
  38.     document.write = function (str) {  &nbsp
    ;
  39.         document_buffer += str;   
  40.     }   
  41.     document.writeln = function (str) {   
  42.         document_buffer += str + "\n";   
  43.     }   
  44.   
  45.     global_html_pool = [];   
  46.   
  47.     var scripts = [];   
  48.     html = html.split(/<\/script>/i);   
  49.     for (var i = 0; i < html.length; i++) {   
  50.         global_html_pool[i] = html[i].replace(/<script[\s\S]*$/ig, "");   
  51.         scripts[i] = {text: , src:  };   
  52.         scripts[i].text = html[i].substr(global_html_pool[i].length);   
  53.         scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf(‘>’) + 1);   
  54.         scripts[i].src = scripts[i].src.match(/src\s*=\s*(\"([^\"]*)\"|\‘([^\']*)\’|([^\s]*)[\s>])/i);   
  55.         if (scripts[i].src) {   
  56.             if (scripts[i].src[2]) {   
  57.                 scripts[i].src = scripts[i].src[2];   
  58.             }   
  59.             else if (scripts[i].src[3]) {   
  60.                 scripts[i].src = scripts[i].src[3];   
  61.             }   
  62.             else if (scripts[i].src[4]) {   
  63.                 scripts[i].src = scripts[i].src[4];   
  64.             }   
  65.             else {   
  66.                 scripts[i].src = "";   
  67.             }   
  68.             scripts[i].text = "";   
  69.         }   
  70.         else {   
  71.             scripts[i].src = "";   
  72.             scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf(‘>’) + 1);   
  73.             scripts[i].text = scripts[i].text.replace(/^\s*<\!–\s*/g, "");   
  74.         }   
  75.     }   
  76.   
  77.     var s;   
  78.     if (typeof(time) == "undefined") {   
  79.         s = 0;   
  80.     }   
  81.     else {   
  82.         s = time;   
  83.     }   
  84.   
  85.     var script, add_script, remove_script;   
  86.   
  87.     for (var i = 0; i < scripts.length; i++) {   
  88.         var add_html = "document_buffer += global_html_pool[" + i + "];\n";   
  89.         add_html += "document.getElementById(’" + obj_id + "’).innerHTML = document_buffer;\n";   
  90.         script = document.createElement("script");   
  91.         if (scripts[i].src) {   
  92.             script.src = scripts[i].src;   
  93.             if (typeof(global_script_src_pool[script.src]) == "undefined") {   
  94.                 global_script_src_pool[script.src] = true;   
  95.                 s += 2000;   
  96.             }   
  97.             else {   
  98.                 s += 10;   
  99.             }   
  100.         }   
  101.         else {   
  102.             script.text = scripts[i].text;   
  103.             s += 10;   
  104.         }   
  105.         script.defer = true;   
  106.         script.type =  "text/javascript";   
  107.         script.id = get_script_id();   
  108.         global_script_pool[script.id] = script;   
  109.         add_script = add_html;   
  110.         add_script += "document.getElementsByTagName(’head’).item(0)";   
  111.         add_script += ".appendChild(global_script_pool['" + script.id + "']);\n";   
  112.         window.setTimeout(add_script, s);   
  113.         remove_script = "document.getElementsByTagName(’head’).item(0)";   
  114.         remove_script += ".removeChild(document.getElementById(’" + script.id + "’));\n";   
  115.         remove_script += "delete global_script_pool['" + script.id + "'];\n";   
  116.         window.setTimeout(remove_script, s + 10000);   
  117.     }   
  118.   
  119.     var end_script = "if (document_buffer.match(/<\\/script>/i)) {\n";   
  120.     end_script += "set_innerHTML(’" + obj_id + "’,
     document_buffer, "
     + s + ");\n";   
  121.     end_script += "}\n";   
  122.     end_script += "else {\n";   
  123.     end_script += "document.getElementById(’" + obj_id + "’).innerHTML = document_buffer;\n";   
  124.     end_script += "innerhtml_lock = null;\n";   
  125.     end_script += "}";   
  126.     window.setTimeout(end_script, s);   
  127.   }


 

这个js来定义广告   ads.js

var ad250×250 = "<script type=\"text\/javascript\"><!–\n\rgoogle_ad_client = \"pub-1574025608211710\";\n\rgoogle_ad_slot = \"8781672493\";\n\rgoogle_ad_width = 250;\n\rgoogle_ad_height = 250;\n\rgoogle_language = ‘zh-CN’;\n\r\/\/–><\/script>\n\r<script type=\"text\/javascript\"\n\rsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\n\r<\/script>";

set_innerHTML(’ad250_250′,ad250×250);
 

 

html页面给图层加一个id就可以了.

<div id="ad250_250"></div>

 

 

最后将innerhtml.js 和ads.js两个文件放在网站的最底部就可以实现,全站先加载内容,再加载Google的广告了.

<div id="ad250_250"></div>这个图层你还可以加入你自己的说明  比如说"广告正在加载…"之类的,也可以是一个gif动画 ,也就做一个精度条. 呵呵

我也慢慢摸索来着.   等下在自己的站上去试验.

返回顶部