Welcome 微信登录

首页 / 脚本样式 / JavaScript

网页屏蔽(左右键,代码等)的非JS方法第1/2页

网页屏蔽(左右键,代码等)的非JS方法第1/2页

很早就想写一篇关于网页源代码屏蔽的文章。是因为经常编出些JS脚本的之后,在沾沾自喜的同时,也在担心源代码会被人家看到,盗用我的脚本。所以一直以来,我都在尽力维护我的网页源代码的安全。虽然目前还没有找到完全安全的屏蔽方法(也就是说,这些方法在我想出来的同时,自己已经知道其弱点和破解方法了),但是,我这里有很多屏蔽的思路,来总结一下。 众所周知,要保护一个页面,最基础的就是要屏蔽右键。而现在网页上用得最多的是functionclick(),即下面这段代码:...
从JavaScript的函数重名看其初始化方式

从JavaScript的函数重名看其初始化方式

今天有个哥们问我要是JavaScript函数重名了会有什么后果?开始我没有细想,就说可能会出错吧,可是等我实验完了发现页面没有任何脚本错误提示,而且程序也运行了,只是对同名函数的调用执行了位置靠后的一个。 回头仔细一想,这个结果完全可以接受,因为脚本在页面里本身就是顺序执行下来的,包括函数的定义,但然如果只是定义 function foo(){} 这种形式,我们是跟踪不到函数初始化的。可是如果是定义类的方式,我们就可以明显地跟踪到函数的初始化顺序。比如:...
利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页

利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页

在JScript的众多运算符里,提供了三个逻辑运算符&&、||和!,噢?! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是JScript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false,而||和&&运算比较的好玩。 JScript对于逻辑运算的true|false是这么定义的: 所有对象都被认为是 true。 字符串当且仅当为空(""或"")时才被认为是 false。 null ...
JavaScript语言中的Literal Syntax特性分析

JavaScript语言中的Literal Syntax特性分析

我刚开始学习JavaScript的时候,老是会被JavaScript里的一些莫名其妙的语法形式搞的糊里糊涂的。而且也不知道到底它支持了多少那些莫名其妙的语法形式?现在通过这个几个月的深入了解,算是把它们弄得比较清楚了,所以下面就来说说JS的Literal Syntax特性。 JavaScript语言的文本化的特性?My God,难道有哪门语言的编写不是使用文本吗?不使用文本还能用啥?用意识流吗?真是faint哈。 虽然我们的每种语言都使用文本来表示,说远点...
在JavaScript中使用inline函数的问题

在JavaScript中使用inline函数的问题

前段时间被IE和JavaScript脚本引擎的Memory Leak问题弄得郁闷坏了,不过幸好现在总算是柳暗花明了,并且找到了一些IE中使用脚本避免ML问题的方法。继续研究JavaScript的编写,有发现一些不算ML问题,但是可以节约IE内存使用的方法,在此和大家讨论讨论。 我们在JavaScript中编写代码,对于定义函数的语句: functionfoo(){//TODO: . . .returnx;}可以说是在熟悉不过了。当然除了这种定义函数的方法,...
区分JS中的undefined,null,"",0和false

区分JS中的undefined,null,"",0和false

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NETFramework中数据库字段的空值DBNull,boolean类型的假值false等等。在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是true和false这两种情况外,其它数据类型的"空值"主要是...
JavaScript中this关键字使用方法详解

JavaScript中this关键字使用方法详解

在面向对象编程语言中,对于this关键字我们是非常熟悉的。比如C++、C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要"混乱"的多了。 下面就来看看,在JavaScript中各种this的使用方法有什么混乱之处? 1、在HTML元素事件属性中inline方式使用this关键字: <divonclick=" //...
JScript中的"this"关键字使用方式补充材料

JScript中的&quot;this&quot;关键字使用方式补充材料

在"JavaScript中this关键字使用方法详解"一文中,我曾例举了在JavaScript和JScript中的8种this关键字的方式。这不又发现还有两种this关键字的使用方式当时没有说到,现补充说明一下。并且通过第一种this关键字使用的说明,能让我们更好的理解JavaScript作为Object-Based语言的本质。 一种是和JavaScript类中的定义有关,我们知道当我们定义如下类的时候: functionJSClass() { } JSC...
JavaScript语句可以不以;结尾的烦恼

JavaScript语句可以不以;结尾的烦恼

JavaScript做为一个灵活的脚本语言,其成功是我们显而易见的。不过对于JavaScript语句可以不以";"结尾这点,我对其一直都耿耿于怀!这个特性除了带来语句的混乱,且使其依赖于代码排版(换行)外,我没有发现任何的优点。难道是为了可以少敲一个";"?!如果习惯了C#、C/C++等的强制";",会更加的觉得郁闷。 同时这个特性对于JavaScript的debug来说,是灾难性的。下面这个语句是正确的吗? if(results=="AdvancedTi...
JScript中的undefined和"undefined"的区别

JScript中的undefined和&quot;undefined&quot;的区别

JScript中用于表示未定义的undefined标识符到底是表示什么未定义?它和"undefined"(包括"在内)又有什么区别和联系呢?为什么有的时候可以使用undefined来和变量做比较,而有的时候又不行呢? underfined和"undefined"的区别大家一眼就能看出来。在一般的认知下,我们认为undefined是JScript提供的一个"关键字",而"undefined"却毫无悬念的就是一个字符串,只是引号内的内容长得和undefined...
使用IE的地址栏来辅助调试Web页脚本

使用IE的地址栏来辅助调试Web页脚本

不小心使用Shift + Left Click去点击了一个链接目标(href)是脚本的超链接,结果却把是否调试脚本的对话框弄了出来。点击yes居然可以打开调试这一句脚本,可是这句脚本是哪里来的呢? 回头看看被新打开的那个IE,结果地址栏里就写着:javascript:open(url)呢。原来IE的地址栏可以使用"JavaScript:"这个声明来执行脚本也,在试试JavaScript:alert("ok"),果然ok! 好玩的特性,再写点复杂的脚本...
JS类库Bindows1.3中的内存释放方式分析

JS类库Bindows1.3中的内存释放方式分析

我在前段时间介绍过IE中JavaScript脚本Memory Leak的问题,后来在几位热心网友的讨论下,基本认可了内存泄露的事实和原理。在小规模的测试case下,本来都达到了基本避免IE中脚本的ML问题。可是近来发现只以"仔细"来防止IE中脚本ML似乎是非常困难的一件事情,难道开始的讨论有错误吗? 何谓"仔细"呢?就是说在有对象相互引用的时候,在对象丢弃时(不一定是页面refresh)断开彼此的引用链,特别是脚本中创建的对象和DHTML中的对象间的引用;...
在js中使用"with"语句中跨frame的变量引用问题

在js中使用&quot;with&quot;语句中跨frame的变量引用问题

在脚本编程时使用with语句,可以大大的缩减使用多级对象引用代码行的长度,这是JScript提供给我们的一个SyntaxSugar。当然不使用with,使用临时变量也可以达到同样的效果。不过创建变量时起名确实不是一件很遐意的事,就连MASM高版本中也提供了一个@@(以及@F和@B)来处理临时标号的问题,看来大家都是比较懒得啦。 我也挺喜欢用with语句的,确实可以省不少的事情,而且可以让代码变得也清晰些,特别是在处理跨frame的变量引用时,更加显得方便。...
原型方法的不同写法居然会影响调试的解决方法

原型方法的不同写法居然会影响调试的解决方法

上次我写过一篇文章,讨论"JavaScript类定义原型方法的两种实现的区别"。研究后发现除了方法的初始化方式不同外,没有发现别的原则上的却别,也就是说用哪种方式都一样。可是后来发现在VS.NET中给原型方法设置断点来调试时,两种定义方式却出现了很大的差别。 先看如下代码示例:1ToolBar.prototype.Dispose=function() 2{ 3varelmt=this.GetElement();*** 4elmt.onselectstart...
在JavaScript中遭遇级联表达式陷阱

在JavaScript中遭遇级联表达式陷阱

依稀还记得,在学习C语言的库函数时,很多字符串操作相关的函数都会返回和结果相关的指针。其实这个返回值很多时候都并不是非常必要,因为在我们的传入的参数中,十有八九已包含了这个指针。而加上这个返回值的最大好处就是,可以让我们方便的书写出级联表达式。但是这些年的实际工作中,越发觉得级联表达式是个魔鬼馅饼。 比如在C语言中,我们熟悉的字符串操作函数strcpy,strcat等,它们的原形一般是:externchar*strxxx(char*dest,char*sr...
获取JavaScript用户自定义类的类名称的代码

获取JavaScript用户自定义类的类名称的代码

我们知道,虽然JavaScript是基于对象(object-based)的语言。但是使用其原形(prototype)特性,我们完全可以实现十分sexy的OO编成框架,这个可以看看经典论坛的文章"基本上实现javascript的OOP(0423版)"。 不过虽然我们实现了"类"这种概念,可是JavaScript的脚本系统却仍然是不认账的。我们并没有办法使用脚本系统中的typeof方法获取自定义类的类型,比如"类"JSClass定义如下: functionJS...
<< 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 >>