请帮我全面解释下以下JS代码的含义及修改方法!

JavaScript014

请帮我全面解释下以下JS代码的含义及修改方法!,第1张

也不知道你要修改什么!!!!!

这是我写到一半的解释哥哥你自己研究好了.

首先你要了解document.cookie的格式:document.cookie="userId=828userName=hulk"

假设你这个js中的document.cookie="musicurl=www.sina.com"

var cookieString = new String(document.cookie)

载入页面cookie 以开头例子来说这时候cookieString="musicurl=www.sina.com"

var cookieHeader = "musicurl="

定义一个字符串

var beginPosition = cookieString.indexOf(cookieHeader)

查找字符串"musicurl="在cookie中出现的位置

cookieString = cookieString.substring(beginPosition + cookieHeader.length)

截取"musicurl="以后的字符串,并重新赋值给cookieString 以开头例子来说这时候cookieString="www.sina.com"

end = cookieString.indexOf("")

查找cookieString中的""位置

if (end>0)

如果cookieString中有""

{url = cookieString.substring(0,end)}

获取 cookieString中从开始到出现""的字符串并赋值给url

else

如果cookieString中没有有""

{url=cookieString}

就将整个cookieString赋值给url 以开头例子来说这时候url="www.sina.com"

String.prototype.GetCount = function(str,mode){return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length")}

Eval方法

参数 :

codeString

必选。包含有效 JScript 代码的字符串。

override

可选项。确定要应用于 codeString 中代码的安全权限的字符串。

eval 函数允许动态执行 JScript 源代码。

传递给 eval 方法的代码执行时所在的上下文和调用 eval 方法时的上下文一样。请注意,在 eval 语句中定义的新变量或类型对于封闭程序是不可见的。

下面的代码将变量 mydate 初始化为测试日期或当前日期,这取决于变量 doTest 的值:

var doTest : boolean = true

var dateFn : String

if(doTest)

dateFn = "Date(1971,3,8)"

else

dateFn = "Date()"

var mydate : Date

eval("mydate = new "+dateFn+"")

print(mydate)

该程序的输出为:Thu Apr 8 00:00:00 PDT 1971

function urldecode(str){

var i,temp

var result=""

for(i=0i<str.lengthi++)

{

if(str.charAt(i)=="%")

{

if(str.charAt(++i)=="u")

{

temp=str.charAt(i++) + str.charAt(i++) + str.charAt(i++) + str.charAt(i++) + str.charAt(i)

result += unescape("%" + temp)

}else{

temp = str.charAt(i++) + str.charAt(i)

if(eval("0x"+temp)<=160){

result += unescape("%" + temp)

}else{

temp += str.charAt(++i) + str.charAt(++i) + str.charAt(++i)

result += Decode_unit("%" + temp)

}

}

}else{

result += str.charAt(i)

}

}

return result

}

function Decode_unit(str){

var p,q = ""

if(str.GetCount("%")!=2)return str

p=eval("0x" + str.split("%")[1])

q=eval("0x" + str.split("%")[2])

if(p<160 || q<160)return unescape(str)

str=str.replace(/%/g,"")

execScript("temp=&H"+str, "vbscript")

eval()和execScript都可以动态的执行JAVASCRITP脚本,但它们还是有些大大小小的不同,我将网上的一个帖子整理一下,帮大家理理头绪。有这么几个不同的地方:

1、eval对浏览器的支持比较的好,我测试过,它对IE和FIREFOX都支持,但是execScript对FIREFOX不支持。

2、execScript执行后的上下文是全局的,而eval执行后的上下文是调用方法的函数体内(目前还没有时间测试一下,忙ing)

下面的一段代码是融合将execScript的优点移植到eval的方法

在任何执行eval的上下文中只需将变量直接定义成 window 下的某个“属性”即可成为全局变量。

例如

function test()

{

eval("window.a = '全局变量'")

eval("window.b = function(){alert('全局函数')}")

}

test()

alert(a)

b()

文章出处:http://www.diybl.com/course/1_web/webjs/200877/131998.html

execScript("result=chr("+temp+")", "vbscript")

return result

}

1.document.write("")输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase()7.JS中的值类型:String,Number,Boolean,Null,Object,Function 8.JS中的字符型转换成数值型:parseInt(),parseFloat() 9.JS中的数字转换成字符型:(""+变量) 10.JS中的取字符串长度是:(length) 11.JS中的字符与字符相连接使用+号. 12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<= 13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression][condition][upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS中的函数定义:function functionName([parameter],...){statement[s]} 18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self 20.状态栏的设置:window.status="字符"21.弹出提示信息:window.alert("字符")22.弹出确认框:window.confirm()23.弹出输入提示框:window.prompt()24.指定当前显示链接的位置:window.location.href="URL" 25.取出窗体中的所有表单的数量:document.forms.length 26.关闭文档的输出流:document.close()27.字符串追加连接符:+= 28.创建一个文档元素:document.createElement(),document.createTextNode() 29.得到元素的方法:document.getElementById()30.设置表单中所有文本型的成员的值为空: var form = window.document.forms[0] for (var i = 0i<form.elements.lengthi++){ if (form.elements.type == "text"){ form.elements.value = ""} } 31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE) 32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length 33.单选按钮组判断是否被选中也是用checked. 34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值) 35.字符串的定义:var myString = new String("This is lightsword")36.字符串转成大写:string.toUpperCase()字符串转成小写:string.toLowerCase()37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到. 其余看 http://pro-ygw.javaeye.com/blog/32517