vbs是出自vb,javascript用的是java的文法,這兒就不說了!
vbs不需要區分大小寫,而js需要區分大小寫,這點相信是很多人討厭js的原因,我以前也是很討厭js的這點,不過學習vbs一段時間後,做網頁都用vbs,發現很多地方不如意,漸漸的就習慣了js的文法。
js也可以像vbs一樣獨立存在:
//js
var fso=new ActiveXObject("scripting.filesystemobject")
fso.createfolder("2/")
'vbs
set fso=createobject("scripting.filesystemobject")
fso.createfolder("2/")
上面兩個的結果都是一樣的,運行後建立一個名為“2”的檔案夾。
像wscript.shell,wscript.Arguments等等對象,js都能調用,不過js用的是 new ActiveXObject,而vbs用的是 set 而已。
Regex,這東西太繁複了,不過Regex確實很強大!
本來是js的東西,vbs也能調用,vbs調用時,還是用了一個 new 的!
Set regEx = New RegExp
不過js用起來比較方便,vbs要麻煩一點。
我用這東西比較機械,還不是很熟練,在這兒就不多說了。
但是,vbs的預設對象,像wscript,js就不能調用了。
還有,集合,vbs和js有點不一樣
'vbs
str="
set fso=createobject("scripting.filesystemobject")
set ds=fso.drives
for each d in ds
str=str+d.driveletter+chr(13)
next
//js
var str=""
var fso=new ActiveXObject("scripting.filesystemobject")
var ds=new Enumerator(fso.drives) //集合的定義
for (; !ds.atEnd(); ds.moveNext())
str=str+ds.item()+"/b"
}
alert(s)
拋開vbs和js的來源和文法不談,其實vbs和js在很多地方還是大同小異的。vbs能做到,js大多數也能做到,不過有的只是類比效果,稍微麻煩一點而已。反之,js能做到的,vbs大多數也能做到。
再說嵌入到html
<script language=vbsript>
'vbs
</script>
<script langage=javascript>
//js
//不用language屬性,或者用javascript加上版本也行,像javascript1.2
//如果一個頁面js,vbs混雜,最好加上language屬性
</script>
vbs的on error resume next很強大,大家覺得很方便,尤其是做網頁時,狀態列不顯示錯誤,呵呵!
其實js也行,直接 window.onerror=return true 就行,和 on error resume next 差不多
vbs在html中,有所謂的“事件驅動”,這玩意兒js就沒有
<script language=vbscript>
funtion object_event
end function
</script>
object_event,即對象加“_”加事件,如window_onload表示表單被載入;a_ondblclick表示a對象被雙擊,不過要事先用id定義個a。
還有,在html中很多東西用js比較方便:
<body onselectstart="return false"><!--禁止選擇-->
oncontextmenu="return fasle" 禁止右鍵菜單
oncopy="return false" 禁止複製
用vbs就麻煩點了。不過也有一些東西,用vbs要比用js方便。
說到這兒,再說說eval函數,js和vbs中都有這個函數,這個函數功能很強大。
vbs中,eval用來檢驗一個運算式是否為真,返回bool值:trur或false。js中也有這個功能。
eval還有一個功能,把字串轉或為對象,(獨立的vbs不行)
<!--js+html-->
<div id=a3 onclick=ch()>單擊改變內容</div>
<script language=javascript>
function ch(){
eval("a"+3).innerText="a3對象的innerText"
}
</script>
'vbs(html中)
for zz=0 to document.links.length-1
document.links(zz).className=""
next
document.links(eval(amount)).className="a"
這段的意思檢測所有的超連結,沒檢測一次並且把第amout個超連結的class屬性改為a,這段是我用html寫的中華詩詞中的一段,能讓所有的超連結中除了被點的那個是一種顏色外,其餘的所有超連結又都是另一種顏色。
不僅如此,eval還能把字串轉化成計時器:setTimeout(),setInterval()
下面的例子也是經常被使用
<span id=a1 onclick=f(this) class=a>1</span>
<span id=a2 onclick=f(this) class=a>2</span>
<span id=a3 onclick=f(this) class=a>3</span>
<span id=a4 onclick=f(this) class=a>4</span>
<span id=a5 onclick=f(this) class=a>5</span>
<style>
.a{color:red;cursor:hand;}
#a1{color:blue;}
</style>
<script>
function f(o){
for (i=1;i<=5;i++){
eval("a"+i).style.color="red"
}
o.style.color="blue"
}
</script>
總之,vbs和js各有所長,哪個方便時就用哪個!