Javascript

前些天自己做了个放大镜,很不要脸的出了带有很多Bug的beta4版本(本博客里的是beta2),无意间发现了很不错并且比较低调的“放大镜”作品,遵循w3c标准,ie&firefox都兼容,并且易于使用,而我的版本是基于Jquery框架开发的,而且还没有解决w3c标准和浏览器兼容问题。 厄... 有时间还得继续优化一下。似乎我欠自己的东西比较多,承诺挺多内容都没都还没有做到的,那也阻止不了我继续承诺!

那么现在让我们来看看这位大师的作品吧。 He said, "If you're using my script, post a message with your site to my blog! Thanks :).", so I do it.

调用起来非常简单,like this。

 

<!-- 首先你当然得引用其JS文件。 -->
<script type="text/javascript" src="http://valid.tjp.hu/tjpzoom/tjpzoom.js"></script>

<!-- 像下面这样就可以使用了,方法一 -->
<img style="width: 300px; height: 239px;" src="http://tjp.hu/barakk/images/200201152147.jpg"
onmouseover="TJPzoom(this)" alt="">

<!-- 方法二 -->
<img style="width: 580px; height: 580px;" src="http://valid.tjp.hu/zoom/collage.jpg"
 
onmouseover="TJPzoom(this,'http://valid.tjp.hu/zoom/collage_2.jpg')" alt="">

那么效果如何呢?(因为无法上传边框图的原因,倒至效果有些让人失望,不过你可以去看原版。)

meiking   2008-06-07 02:36:27 阅读:56  评论:0  引用:0

很久以前写过一个键盘事件的文章,在 本站的 meiking 目录下,不过那时迷迷糊糊的什么也不懂,现在重新整理一下。

关键字:IE下的 event.keyCode、Firefox下的e.which以及String.fromCharCode方法。

document.onkeydown = function(e) {
    var curKeyCode = isIe ? event.keyCode : e.which;
    alert("Key code: "+curKeyCode+"\nYou press: "+String.fromCharCode(curKeyCode));
    //当用户按 "esc" 则执行以下内容。
    if(curKeyCode == 27) {
        //closeDetail();
    }
};

var agt = navigator.userAgent.toLowerCase();      //navigator为浏览器对象。
var isIe = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1) && (agt.indexOf("omniweb") == -1));
quot;) == -1) && (agt.indexOf("omniweb") == -1));
meiking   2008-06-06 12:13:13 阅读:70  评论:0  引用:0

今天下午在别人网站上偷JS代码,人家不让我偷,但JS这种依靠浏览器解释执行的语言加密基本没什么太大意义。

下面是一段加密后的代码,很晕吧,但事实上只是使用了障眼法,把换行取消掉了而已,让我们排版一下再来看看到底是什么?

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1 t;1 y=R;1 i=l;1 f=x;1 8=2.K;1 6=\'\';5 C(a){i=l;f=x;8=2.13;y=Z;6=a;v();u()}5 u(){k(t!=q){t.L.J=6;t.r()}}5 j(){k(t==q){3.4("7").B="7";3.4("7").9.1a="18";t=12 10.X(\'h\',{8:8,T:i,S:f,Q:i,P:f,O:\'7\',6:6});k(!3.N.M){o();t.r()}}}5 v(){p.n(I,\'H\',j);p.n(3.4("h"),\'G\',j)}5 o(){1 a=3.4("7");1 b=3.4("F");1 c=0;1 d=0;1 e=b.m;E(e.D!="V"){c=c+e.W;d=d+e.A;e=e.m}c=c+Y/2+3.4("h").19/2;d=d+3.4("h").z-17(a.9.z);a.9.14=d+"w";a.9.11=c+"w"}5 15(a){1 b=16(a).U(/^[\\s]+|[\\s]+$/g,\'\');1b b}',62,74,'|var||document|getElementById|function|previewSrc|previewArea|radio|style||||||mHeight||testImage|mWidth|createPreview|if|85|offsetParent|observe|setPreviewWrapPos|Event|null|reset|||resetPreview|observe_pic|px|70|isNeck|height|offsetTop|className|initProduct|tagName|while|pbigImg|mouseover|load|window|src|6666667|previewImg|attachEvent|body|previewWrap|maxHeight|maxWidth|false|minHeight|minWidth|replace|BODY|offsetLeft|ImgWithPreview|310|true|Cropper|left|new|666666667|top|Trim|String|parseInt|absolute|width|position|return'.split('|'),0,{}))

排版后

eval(
function(p,a,c,k,e,r){
    e = function(c){
        return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))
    };
    if(!''.replace(/^/,String)) {
        while(c--)r[e(c)]=k[c]||e(c);
        k = [function(e){return r[e]}];
        e = function(){return'\\w+'};
        c = 1
    };
    while (c--) if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);
    return p;
}('1 t;1 y=R;1 i=l;1 f=x;1 8=2.K;1 6=\'\';5 C(a){i=l;f=x;8=2.13;y=Z;6=a;v();u()}5 u(){k(t!=q){t.L.J=6;t.r()}}5 j(){k(t==q){3.4("7").B="7";3.4("7").9.1a="18";t=12 10.X(\'h\',{8:8,T:i,S:f,Q:i,P:f,O:\'7\',6:6});k(!3.N.M){o();t.r()}}}5 v(){p.n(I,\'H\',j);p.n(3.4("h"),\'G\',j)}5 o(){1 a=3.4("7");1 b=3.4("F");1 c=0;1 d=0;1 e=b.m;E(e.D!="V"){c=c+e.W;d=d+e.A;e=e.m}c=c+Y/2+3.4("h").19/2;d=d+3.4("h").z-17(a.9.z);a.9.14=d+"w";a.9.11=c+"w"}5 15(a){1 b=16(a).U(/^[\\s]+|[\\s]+$/g,\'\');1b b}',62,74,'|var||document|getElementById|function|previewSrc|previewArea|radio|style||||||mHeight||testImage|mWidth|createPreview|if|85|offsetParent|observe|setPreviewWrapPos|Event|null|reset|||resetPreview|observe_pic|px|70|isNeck|height|offsetTop|className|initProduct|tagName|while|pbigImg|mouseover|load|window|src|6666667|previewImg|attachEvent|body|previewWrap|maxHeight|maxWidth|false|minHeight|minWidth|replace|BODY|offsetLeft|ImgWithPreview|310|true|Cropper|left|new|666666667|top|Trim|String|parseInt|absolute|width|position|return'.split('|'),0,{}))

那么熟悉这种函数写法的应该就能明白这个加密原理了吧。只要细心点就能发现其实这种加密手段是用来防止一些拿来主意者。上面加密的js代码如果想得到其原代码可以在“return p;” 之前打印出来既可,例如:“document.writeln(p);”。 顺便介绍一下 eval 方法。

eval 方法
检查 Javascript 代码并执行.

eval(codeString)

必选项 codestring 参数是包含有效 Javascript 代码的字符串值。这个字符串将由 Javascript 分析器进行分析和执行。

说明
eval 函数允许 Javascript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate :

eval("var mydate = new Date();");
传递给 eval 方法的代码执行时的上下文和调用 eval 方法的一样.

meiking   2008-06-05 15:59:41 阅读:355  评论:3  引用:0

Javascript 似乎从来没有真正的好好学过,但确一直在频繁的使用,倒置水平不伦不类,所以决定还是系统的学习一下。

学习内容包括:

  • 语法相关细节,一直觉得其语法混乱
  • 面向对象。
  • 常用的方法、属性、函数等,以及其兼容性的解决。
    • window、prototype、document等。
  • 实用框架和插件。
    • Jquery
    • Json
meiking   2008-06-05 15:42:07 阅读:24  评论:0  引用:0
Copyright@2008 powered by YuLog