欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
夜貓 - JavaScript教程 - 第三部分 window 和 frame 對象 - Powered by ymCMS v3.1.0 Alpha2
JavaScript教程 - 第三部分 window 和 frame 對象

  2003-09-03 16:36
來(lái)源:

[正文]

創(chuàng )建新的 window (窗口) 對象

你有時(shí)需要打開(kāi)一個(gè)新的瀏覽器窗口,用來(lái)顯示信息或廣告,但是在這里我要提醒你一下,大部分人在瀏覽一個(gè)網(wǎng)站的時(shí)候,是不會(huì )注意彈處的新窗口里邊寫(xiě)些什么,他們會(huì )很快地關(guān)掉窗口,只有少數的人會(huì )留意這些彈出的窗口。然而,這項技術(shù)還是很不錯的。

【彈出窗口的小測試】

在這個(gè) 在線(xiàn)示例 中,我們給出一個(gè)小測試問(wèn)題的列表,對應于每一個(gè)問(wèn)題都一個(gè)顯示答案的超鏈接,而這些超鏈接將會(huì )彈出一個(gè)小窗口來(lái)顯示答案,看一看代碼就清楚了。

實(shí)際上,每一個(gè)答案的超鏈接都調用了同一個(gè)函數 showAnswer(),通過(guò)傳遞的參數 url (此參數是答案所在的頁(yè)面的地址 URL) 的不同,在彈出的小窗口中顯示不同的頁(yè)面;在這個(gè)函數中使用了 window.open() 方法來(lái)創(chuàng )建新的窗口:

function showAnswer(url) {
window.open(url, "answer", "height=100,width=100,directories=no," +
"location=no,menubar=no," +
"resizeable=no,status=no,toolbar=no");
return false;
}

open() 方法有三個(gè)參數:打開(kāi)窗口中的頁(yè)面地址 URL (包括路徑和文件名),給新窗口取的一個(gè)英文名字,打開(kāi)的窗口的一些屬性設置 (如窗口的高度、寬度、是否顯示滾動(dòng)條、是否顯示瀏覽器的菜單欄等等)。

新窗口的名字在某些時(shí)候可能會(huì )用到,在別的窗口中使用 TARGET="新窗口的名字" 使超鏈接所鏈接的頁(yè)面在新窗口中顯示,描述窗口特性的參數是一個(gè)包含關(guān)鍵字和關(guān)鍵字值的字符串,各個(gè)關(guān)鍵字之間使用英文逗號 (,) 隔開(kāi),使用這個(gè)參數的時(shí)候一定要小心,各個(gè)關(guān)鍵字、關(guān)鍵字值、逗號之間千萬(wàn)不要有空格。

注意:此例中的 “+” 好只是為了代碼能夠換行書(shū)寫(xiě)才加上的,其實(shí)它們只是連結字符串而已,沒(méi)有別的,不使用 “+” 好一樣是可以的。

窗口特性 (即是打開(kāi)的瀏覽器的樣子) 的關(guān)鍵字、關(guān)鍵字值可以參考下表:

  • 是否顯示工具欄:toolbar[=yes|no]|[=1|0]
  • 是否顯示地址欄:location[=yes|no]|[=1|0]
  • 是否顯示前進(jìn)、后退、刷新按鈕:directories[=yes|no]|[=1|0]
  • 是否顯示狀態(tài)欄:status[=yes|no]|[=1|0]
  • 是否顯示菜單欄:menubar[=yes|no]|[=1|0]
  • 是否顯示滾動(dòng)條:scrollbars[=yes|no]|[=1|0]
  • 用戶(hù)是否可以改變窗口的大?。?b>resizable[=yes|no]|[=1|0]
  • 是否在新窗口中保留瀏覽器的瀏覽歷史紀錄:copyhistory[=yes|no]|[=1|0]
  • 窗口的寬度 (單位為像素):width=pixels
  • 窗口的高度 (單位為像素):height=pixels

如果在字符串中給定了這些值的話(huà),窗口就會(huì )按你定義的現實(shí),否則將會(huì )使用默認的值,想要進(jìn)一步了解這方面的信息請參考 Netscape‘s JavaScript Guide !

【給窗口指定頁(yè)面】

當你使用上面的方法創(chuàng )建了一個(gè)新窗口之后,你還可以再次給這個(gè)窗口指定新的頁(yè)面,這就要用到 open() 方法的返回值了,請看下邊的代碼:

myWin = window.open(url, "", "height=100,width=100");
...
myWin.location = "newpage.html";

上邊的代碼將打開(kāi)的新窗口的頁(yè)面重新指定為 newpage.html,這樣窗口中就會(huì )顯示頁(yè)面 newpage.html了。同時(shí),在打開(kāi)的新窗口中,你也可以通過(guò)使用 window 對象的 opener 屬性將窗口對象指向打開(kāi)此窗口的母窗口,這樣也就可以對母窗口的數據或函數進(jìn)行操作了,例如下邊的代碼中就是將母窗口的頁(yè)面重新指定為 newpage.html

window.opener.location = "newpage.html";

【關(guān)閉一個(gè)窗口】

再讓我們看一下前邊的 在線(xiàn)示例 中我們所打開(kāi)的新窗口,你會(huì )窗口中沒(méi)有菜單欄,那我們該如何將此窗口關(guān)掉呢?不用擔心,我們可以使用 window 對象的 close() 方法來(lái)關(guān)閉打開(kāi)的小窗口,那個(gè) “關(guān)閉窗口!” 按鈕中就是使用了此方法:

<form>
<input type=submit value="關(guān)閉此窗口" onClick="window.close(); return false;">
</form>

當你按下按鈕后,就會(huì )觸發(fā) onClick 事件,從而調用 window 對象的 close() 方法,此方法將當前的窗口關(guān)閉掉。

處理 frame [幀] 對象

正如我們在前邊的章節中提到的那樣,frame 幀其實(shí)是單獨的窗口,它對應于單獨的窗口對象,有自己的 location、historydocument 屬性。

在這個(gè) 在線(xiàn)示例 中你將會(huì )看到一系列的幀,代碼如下:

<html>
<head>
<title></title>
</head>

<frameset rows="300,*">
<frame name="a" src="example3-2a.html">
<frameset cols="33%,33%,33%">
<frame name="b" src="example3-2b.html">
<frame name="c" src="example3-2c.html">
<frame name="d" src="example3-2d.html">
</frameset>
</frameset>

</html>

至于幀的結構、幀是如何分布的等等問(wèn)題這里就不多講了,我們希望你能查看一下例子中的源代碼,你會(huì )發(fā)現幀 A 中有一個(gè)名為 setFrameColor() 的函數,它的作用是用來(lái)改變幀 B、幀 C、幀 D 的背景色,參數 fname 為目標幀的名字,參數 color 為目的背景顏色:

function setFrameColor(fname, color) {

window.parent.frames[fname].document.bgColor = color;
return false;
}

正如前邊例中所演示的那樣,B、C、D 幀的背景顏色確確實(shí)實(shí)被 document.bgColor 改變了,這里頭最重要的是對幀對象的指定,這也是 window.parent.frames[fname] 的作用了,如果參數 fname 的值為 B,則改變幀 B 的顏色。

我們通過(guò)當前幀 (幀 A) 的 window.parent 屬性指定到頂部的幀 (frameset,此幀包含了A、B、C、D四個(gè)幀) ,然后通過(guò)頂部幀的 frames 數組加上幀的名字 fname 指定目標幀 (幀 B、C、D),最后通過(guò)目標幀的 document.bgColor 屬性改變該幀的背景色。

下圖很直觀(guān)地顯示了我們上邊所講的幀對象的指定關(guān)系:


圖 3.1

【引用別的幀/窗口的變量和函數】

你不只是可以引用別的幀/窗口的 document、window 對象,而且還可以訪(fǎng)問(wèn)使用別的幀/窗口的變量和函數。

現在我們將上邊的例子修改一下,請看 在線(xiàn)示例 。在新的例子中,我們給下邊的三個(gè)幀都加了一個(gè)按鈕,用來(lái)恢復各個(gè)幀的默認背景色,按下這些按鈕后,將會(huì )調用幀 A 中的函數 setFrameColor()。下邊就是調用幀 A setFrameColor() 函數的代碼:

window.parent.frames["A"].setFrameColor(window.name, "#ffffff");

正如你所看到的,我們使用了與前邊一樣的技巧。首先使用 window.parent 指向頂層的幀 (frameset),然后使用 frames["A"] 指向幀 A,然后在后邊加上幀 A 中的函數 setFrameColor(),并且加上兩個(gè)參數,這樣就可以運行幀 A 中的函數了。

需要注意的是函數 setFrameColor() 中使用的類(lèi)似 window.name 的語(yǔ)句,這個(gè)名字和 frames[] 數組中使用的是相同的名字,同時(shí)這個(gè)名字還是 <FRAME> 標記中通過(guò) NAME="幀的英文名" 設置的名字。

下邊是與幀相關(guān)的第二個(gè)例子的關(guān)系圖:


圖 3.2

類(lèi)似地,你也可以使用相同的方法使用別的窗口/幀里邊的全局變量,只需要將上邊例中的函數名改成全局變量名即可。

window 對象的 locationhistory 屬性

window對象的 location 屬性包含了當前頁(yè)面的地址 (URL) 信息,你可以直接改變此屬性值,將其設置成新的地址 (URL):

window.location = "http://www.yahoo.com";
或者
location = "http://www.yahoo.com";

你還可以通過(guò)下邊的兩種方法中的任何一種來(lái)使瀏覽器從服務(wù)器上下載 (Load) 頁(yè)面:

  • reload() - 促使瀏覽器重新下載當前的頁(yè)面,也就是“刷新”當前頁(yè)面了。
  • replace(URL) - 促使瀏覽器根據 URL 參數中給出的地址 (URL) 下載頁(yè)面,同時(shí)在當前瀏覽器存儲的歷史記錄 (即所瀏覽過(guò)的頁(yè)面的列表) 中使用新的地址(即此方法中的 URL 參數) 覆蓋當前的頁(yè)面。

使用 replace() 方法意味著(zhù)用戶(hù)將不能通過(guò)按 “返回” 按鈕回到前邊瀏覽過(guò)的那個(gè)頁(yè)面,但這并不是說(shuō)用戶(hù)完全不能回到原來(lái)的所有頁(yè)面,他們只不過(guò)是無(wú)法回到被 replace() 方法替換的那一個(gè)頁(yè)面 (注意:只是被替換的那一個(gè)頁(yè)面)。

表面上看起來(lái)這種方法并不是很有用,而且好像還有點(diǎn)令人討厭,但是,在一些特殊的情況下這種方法卻是很有用的??纯催@個(gè) 在線(xiàn)示例 就知道了,此例中使用 setTimeout() 方法每個(gè)三秒鐘就下載一個(gè)新的頁(yè)面,讓程序運行一段時(shí)間,然后點(diǎn)擊瀏覽器的 “后退” 按鈕,你會(huì )看到瀏覽器的歷史記錄,好多好多,你再試著(zhù)通過(guò)鼠標點(diǎn)擊回到開(kāi)始的頁(yè)面,怎么樣,回去了嗎?好像比較麻煩,因為有一大堆的頁(yè)面在那里擋著(zhù)。

想要解決這個(gè)問(wèn)題可以使用 replace() 方法,看一下這個(gè)改進(jìn)后的 在線(xiàn)示例 就知道了,新的例子中,你只需點(diǎn)擊一次 “后退” 按鈕即可以回到最初的頁(yè)面了。

【history 對象】

history 對象是一個(gè)很有用的對象,此對象記錄著(zhù)瀏覽器所瀏覽過(guò)的每一個(gè)頁(yè)面,這些頁(yè)面組成了一個(gè)歷史記錄列表。history 對象具有兩種方法:

  • forward() - 將歷史記錄向前移動(dòng)一個(gè)頁(yè)面;
  • back() - 將歷史記錄向后移動(dòng)一個(gè)頁(yè)面;

而還有一個(gè) go() 方法也可以控制歷史紀錄,而且功能更加強大,使用此方法需要一個(gè)參數,這個(gè)參數值可以是正負整數、零和字符串,例如 history.go(-2) 將是當前頁(yè)后退兩頁(yè);如果給定的參數是字符串,那么瀏覽器就會(huì )搜索列表,找到最接近當前頁(yè)面位置的并且地址 URL 中含有此字符串的頁(yè)面,然后轉到該頁(yè)面。

請看,下邊的兩條語(yǔ)句是等價(jià)的:

history.go(-1);
history.back();

下邊的代碼將頁(yè)面轉到距離本頁(yè)面位置最近的同時(shí)頁(yè)面地址 URL 中含有字符串 "netscape" (不區分字母的大小寫(xiě)) 的頁(yè)面:

history.go("netscape");

在使用這三個(gè)方法的時(shí)候,如果沒(méi)有找到符合條件的歷史記錄的話(huà),將不會(huì )發(fā)生任何變化,不會(huì )改變當前的頁(yè)面,也不會(huì )顯示錯誤。

小技巧:如果在你的網(wǎng)站中有很多頁(yè)面,那么提供一個(gè) “返回” 功能是很必要的,這樣可以方便用戶(hù)瀏覽你的網(wǎng)站,但是你并不知道用戶(hù)是從哪一個(gè)頁(yè)面來(lái)到當前頁(yè)面的,于是你就不能使用 <A HREF="頁(yè)面的地址">...</A> 的方式來(lái)做超鏈接了,但是可以使用下邊的代碼來(lái)做 “返回” 的超鏈接:

<a href="#" onClick="history.back(); return false;">返回</a>

改變窗口頁(yè)面的內容

你可以使用 window 對象的 scroll() 方法使窗口/幀的內容滾動(dòng),這種滾動(dòng)可以是水平方向的也可以是垂直方向的,在這個(gè) 在線(xiàn)示例 中,幀里邊的美國各個(gè)城市天氣變化的內容將會(huì )不停的滾動(dòng)。

此例中,當頁(yè)面滾動(dòng)到一定的值 (此例中為 750 像素) 的時(shí)候,又將頁(yè)面重新設置成最初的樣子 (即坐標值為:(0,0)),這樣看起來(lái)就是不停的滾動(dòng)了??上У氖?,并不是所有的瀏覽器都提供實(shí)際的頁(yè)面高和寬的像素值,所以你要親自實(shí)踐一下看看這些值要多大才合適。

你還可以重新書(shū)寫(xiě)一個(gè)頁(yè)面中的內容,這就要用到 document 對象的 write() (此方法輸出的時(shí)候不換行) 和 writeln() (此方法輸出完成后自動(dòng)換行)方法了。這兩個(gè)方法需要一個(gè)字符串參數,這個(gè)參數就是要在頁(yè)面中輸出的字符串,可以在字符串中帶上HTML代碼,那樣輸出的結果就和其它網(wǎng)頁(yè)是一樣的了,看看這個(gè) 在線(xiàn)示例 ,查看一下源代碼就知道了。這個(gè)例子中是上邊的幀通過(guò) writeln() 方法向下邊的幀輸出內容。

在此例中,你可以試一試輸入一些 HTML 代碼,看看有什么效果!比如說(shuō)輸入下邊的代碼:

<script>
alert("Hi mom!");
</script>

在下邊幀上,點(diǎn)擊鼠標右鍵,查看一下源代碼,你會(huì )發(fā)現源代碼就是你輸入的那些字符。

在函數 rewriteFrame() 中,有如下語(yǔ)句:

window.parent.frames["text"].document.writeln(document.forms[0].text.value);
window.parent.frames["text"].document.close();

第一條語(yǔ)句是將表單 (form) 的 text 中輸入的內容寫(xiě)到下邊的幀中,第二行代碼是調用 document.close() 的方法告訴瀏覽器向頁(yè)面寫(xiě)的操作已經(jīng)結束。如果你想要是你的輸入覆蓋掉以前的,那就要使用 document 對象的 close() 方法。

【一個(gè)小小的改進(jìn)】

你可能會(huì )注意到上邊的例子中,當你點(diǎn)擊瀏覽器的后退按鈕的時(shí)候,你會(huì )看到你的每一次 “提交” 動(dòng)作都產(chǎn)生了一個(gè)新的頁(yè)面,他們都留在了歷史記錄中,所以像前邊說(shuō)的一樣,你要按很多此 “后退” 才能會(huì )回到最初的頁(yè)面,如果你想除掉這種情況,可以使用 document 對象的 open() 方法,只要在 rewriteFrame() 中加一條語(yǔ)句即可:

window.parent.frames["text"].document.open("text/html", "replace");
window.parent.frames["text"].document.writeln(document.forms[0].text.value);
window.parent.frames["text"].document.close();

open() 方法的第一個(gè)參數值 "text/html" 是用來(lái)告訴瀏覽器準備接受 HTML 數據,而第二個(gè)參數值 "replace" 告訴瀏覽器不要將新寫(xiě)入的頁(yè)面加入到瀏覽器的歷史記錄列表中,和 location.replace(URL) 是很相似的,功能是一樣的,請看改進(jìn)后的 在線(xiàn)示例 。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
javascript訪(fǎng)問(wèn)frame,iframe框架和href的定向
js刷新iframe并給iframe中的控件賦值
jquery iframe操作
Web 前端之 iframe 詳解
父頁(yè)面和iframe子頁(yè)面互相操作
js刷新頁(yè)面方法大全
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久