彈出頁面的幾種方式

【一、普通的彈出窗口】
其實代碼很是簡單:

<SCRIPT LANGUAGE=javascript>
<!--
window.open ('page.html')
-->
</SCRIPT>
  由於這是一段javascripts代碼,因此它們應該放在<SCRIPT LANGUAGE=javascript>標籤和</script>之間。<!-- 和 -->是對一些版本低的瀏覽器起做用,在這些老瀏覽器中不會將標籤中的代碼做爲文本顯示出來。要養成這個好習慣啊。
 window.open ('page.html') 用於控制彈出新的窗口page.html,若是page.html不與主窗口在同一路徑下,前面應寫明路徑,絕對路徑(http://)和相對路徑(../)都可。
  用單引號和雙引號均可以,只是不要混用。
  這一段代碼能夠加入HTML的任意位置,<head>和</head>之間能夠,<body>間</body>也能夠,越前越早執行,尤爲是頁面代碼長,又想使頁面早點彈出就儘可能往前放。

【二、通過設置後的彈出窗口】
  下面再說一說彈出窗口的設置。只要再往上面的代碼中加一點東西就能夠了。咱們來定製這個彈出的窗口的外觀,尺寸大小,彈出的位置以適應該頁面的具體狀況。

<SCRIPT LANGUAGE=javascript>
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
//寫成一行
-->
</SCRIPT>

  參數解釋:


<SCRIPT LANGUAGE=javascript> js腳本開始;
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes爲顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否容許改變窗口大小,yes爲容許;
location=no 是否顯示地址欄,yes爲容許;
status=no 是否顯示狀態欄內的信息(一般是文件已經打開),yes爲容許;
</SCRIPT> js腳本結束

【三、用函數控制彈出窗口】
  下面是一個完整的代碼。
<html>
<head>
<script LANGUAGE=javascript>
<!--
function openwin() {
window.open (page.html, newwindow, height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no)
//寫成一行
}
//-->
</script>
</head>
<body onload=openwin()>
..任意的頁面內容...
</body>
</html>

  這裏定義了一個函數openwin(),函數內容就是打開一個窗口。在調用它以前沒有任何用途。
怎麼調用呢?


  方法一:<body onload=openwin()> 瀏覽器讀頁面時彈出窗口;
  方法二:<body onunload=openwin()> 瀏覽器離開頁面時彈出窗口;
  方法三:用一個鏈接調用:
<a href=注意:使用的「 方法四:用一個按鈕調用:
<input type=button onclick=openwin() value=打開窗口>

【四、同時彈出2個窗口】


  對源代碼稍微改動一下:
<script LANGUAGE=javascript>
<!--
function openwin() {
window.open (page.html, newwindow, height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no)
//寫成一行
window.open (page2.html, newwindow2, height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no)
//寫成一行
}
//-->
</script>


  爲避免彈出的2個窗口覆蓋,用top和left控制一下彈出的位置不要相互覆蓋便可。最後用上面說過的四種方法調用便可。
注意:2個窗口的name(newwindows和newwindow2)不要相同,或者乾脆所有爲空。OK?

【五、主窗口打開文件1.htm,同時彈出小窗口page.html】

  以下代碼加入主窗口<head>區:

<script language=javascript>
<!--
function openwin() {
window.open(page.html,,width=200,height=200)
}
//-->
</script>
加入<body>區:
<a href=1.htm onclick=openwin()>open</a>便可。


【六、彈出的窗口之定時關閉控制】

  下面咱們再對彈出的窗口進行一些控制,效果就更好了。若是咱們再將一小段代碼加入彈出的頁面(注意是加入到page.html的HTML中,可不是主頁面中,不然...),讓它10秒後自動關閉是否是更酷了?


  首先,將以下代碼加入page.html文件的<head>區:
<script language=javascript>

function closeit() {

setTimeout(self.close(),10000) //毫秒

}

</script>
 而後,再用<body onload=closeit()> 這一句話代替page.html中原有的<BODY>這一句就能夠了。(這一句話千萬不要忘記寫啊!這一句的做用是調用關閉窗口的代碼,10秒鐘後就自行關閉該窗口。)

【八、內包含的彈出窗口-一個頁面兩個窗口】

  上面的例子都包含兩個窗口,一個是主窗口,另外一個是彈出的小窗口。
  經過下面的例子,你能夠在一個頁面內完成上面的效果。

<html>
<head>
<SCRIPT LANGUAGE=javascript>
function openwin()
{
OpenWindow=window.open(, newwin, height=250, width=250,toolbar=no,scrollbars=+scroll+,menubar=no);
//寫成一行
OpenWindow.document.write(<TITLE>例子</TITLE>)
OpenWindow.document.write(<BODY BGCOLOR=OpenWindow.document.write(<h1>Hello!</h1>)
OpenWindow.document.write(New window opened!)
OpenWindow.document.write(</BODY>)
OpenWindow.document.write(</HTML>)
OpenWindow.document.close()
}
</SCRIPT>
</head>
<body>
<a href=<input type=button onclick=openwin() value=打開窗口>
</body>
</html>

  看看 OpenWindow.document.write()裏面的代碼不就是標準的HTML嗎?只要按照格式寫更多的行便可。千萬注意多一個標籤或少一個標籤就會出現錯誤。記得用OpenWindow.document.close()結束啊。
【七、在彈出窗口中加上一個關閉按鈕】
<FORM>
<INPUT TYPE='BUTTON' value='關閉' onClick='window.close()'>
</FORM>
呵呵,如今更加完美了!

【九、終極應用--彈出的窗口之Cookie控制】

  回想一下,上面的彈出窗口雖然酷,可是有一點小毛病(沉浸在喜悅之中,必定沒有發現吧?)好比你將上面的腳本放在一個須要頻繁通過的頁面裏(例如首頁),那麼每次刷新這個頁面,窗口都會彈出一次,是否是很是煩人?:-(
  有解決的辦法嗎?Yes! ;-) Follow me.
  咱們使用cookie來控制一下就能夠了。
  首先,將以下代碼加入主頁面HTML的<HEAD>區:

<script>
function openwin(){
window.open(page.html,,width=200,height=200)
}
function get_cookie(Name) {
var search = Name + =
var retur nvalue = ;
if (documents.cookie.length > 0) {
offset = documents.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = documents.cookie.indexOf(;, offset);
if (end == -1)
end = documents.cookie.length;
retur nvalue=unescape(documents.cookie.substring(offset, end))
}
}
return retur nvalue;
}

function loadpopup(){
if (get_cookie('popped')==''){
openwin()
documents.cookie=popped=yes
}
}

</script>

  而後,用<body onload=loadpopup()>(注意不是openwin而是loadpop啊!)替換主頁面中原有的<BODY>這一句便可。你能夠試着刷新一下這個頁面或從新進入該頁面,窗口不再會彈出了。
 
1、 基本變化 <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=no, status=no') //寫成一行 --> </SCRIPT> 參數解釋: window.open 彈出新窗口的命令; 'page.html' 彈出窗口的文件名; 'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替; 100 窗口高度; width=400 窗口寬度; top=0 窗口距離屏幕上方的象素值; left=0 窗口距離屏幕左側的象素值; toolbar=no 是否顯示工具欄,yes爲顯示; menubar,scrollbars 表示菜單欄和滾動欄。 resizable=no 是否容許改變窗口大小,yes爲容許; location=no 是否顯示地址欄,yes爲容許; status=no 是否顯示狀態欄內的信息(一般是文件已經打開),yes爲容許; 2、 彈啓一個全屏窗口 加入fullscreen <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', 'fullscreen') //全屏了,天然其餘條件就都失效了 --> </SCRIPT> 3、 打開一個和按F11所見到的同樣的窗口 加入channelmode <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', channelmode) --> </SCRIPT> 4、 打開一個連標題欄都沒有的窗口(無標題、最小、最大、以及關閉按鈕) <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <script language="javascript"> function unload() { var popUpSizeX=200; //窗口的寬度 var popUpSizeY=166; //窗口的高度 var popUpLocationX=2;//距離左邊的距離 至關於 left var popUpLocationY=2;//距離頂端的距離 至關於 top // URL of the popUp var popUpURL="http://www.33d9.com/default.asp";; //打開頁面的路徑 // ** 下面的就不要隨便改了 *** splashWin = window.open("",'x','fullscreen=1, ,scrollbars=auto,resizable=1'); splashWin.blur(); // Hide while updating window.focus(); splashWin.resizeTo(popUpSizeX,popUpSizeY); splashWin.moveTo(popUpLocationX,popUpLocationY); splashWin.location=popUpURL; } // END unload(); </script> </HEAD> <BODY></BODY></HTML> 看看,什麼效果? 若是把resizable 設爲0 scrollbars = no 呢? 5、 沒有最大化按紐的窗口 其實也就是象軟件的「關於咱們」的那個窗口同樣,下面就是用對話框窗口來實現它。 showModalDialog()以及showModelessDialog() 1.用showModalDialog() <html> <SCRIPT LANGUAGE="javascript"> <!-- showModalDialog('http://www.okajax.com','example04','dialogWidth:400px;dialogHeight:300px;dialogLeft:200px;dialogTop:150px;center:yes;help:yes;resizable:yes;status:yes') //--> </SCRIPT> <b>http://www.okajax.com/</b> </body> </html> 2.用showModelessDialog() <html> <SCRIPT LANGUAGE="javascript"> <!-- showModelessDialog('http://www.okajax.com','example05','dialogWidth:400px;dialogHeight:300px;dialogLeft:200px;dialogTop:150px;center:yes;help:yes;resizable:yes;status:yes') //--> </SCRIPT> <b>http://www.okajax.com/</b> </body> </html> 至於showModalDialog()與showModelessDialog()的區別,在於showModalDialog()打開的窗口(簡稱模式窗口),置在父窗口上,必須關閉才能訪問父窗口(建議儘可能少用,以避免招人反感);showModelessDialog()(簡稱無模式窗口),打開後沒必要關閉也可訪問父窗口打開的窗口。 如今我將這裏的一些參數說明一下。 dialogHeight: iHeight 設置對話框窗口的高度。 dialogWidth: iWidth 設置對話框窗口的寬度。    dialogLeft: iXPos 設置對話框窗口相對於桌面左上角的left位置。 dialogTop: iYPos 設置對話框窗口相對於桌面左上角的top位置。 center: {yes | no | 1 | 0 } 指定是否將對話框在桌面上居中,默認值是「yes」。 help: {yes | no | 1 | 0 } 指定對話框窗口中是否顯示上下文敏感的幫助圖標。默認值是「yes」。    resizable: {yes | no | 1 | 0 } 指定是否對話框窗口大小可變。默認值是「no」。 status: {yes | no | 1 | 0 } 指定對話框窗口是否顯示狀態欄。對於非模式對話框窗口,默認值是「yes」;對於模式對話框窗口,默認值是 「no」。 6、 彈出n 個窗口 這很簡單,只要執行n 次window.open()就好了,固然必定要給每一個窗口起不一樣的名字, 還有,設置一下left和top,避免重疊。 7、 刷新以後就再也不彈出窗口 咱們使用cookie來控制一下就能夠了。 首先,將以下代碼加入主頁面HTML的<HEAD>區: <script> function openwin(){ window.open("page.html","","width=200,200") } function get_cookie(Name) { var search = Name + "=" var returnvalue = ""; if (documents.cookie.length > 0) { offset = documents.cookie.indexOf(search) if (offset != -1) { offset += search.length end = documents.cookie.indexOf(";", offset); if (end == -1) end = documents.cookie.length; returnvalue=unescape(documents.cookie.substring(offset, end)) } } return returnvalue; } function loadpopup(){ if (get_cookie('popped')==''){ openwin() documents.cookie="popped=yes" } } </script> 而後,用<body 替換主頁面中原有的<BODY>這一句便可。你能夠試着刷新一下這個頁面或從新進入該頁面,窗口不再會彈出了。 8、 讓彈出窗口適應裏面圖片的大小 不少時候咱們須要提供這樣的功能給訪問者:當訪問者點擊頁面中的縮略圖時,其對應的全尺寸圖片將顯示在一個新的彈出窗口中供訪問者查看。   實現此功能的最簡單做法是用如下HTML代碼建立一個圖像連接:   <a href="fullsize.jpg" _fcksavedurl=""fullsize.jpg"" target="_blank"><img src="small.jpg"></a>   其中<a>標記的href屬性指定全尺寸圖片的URL,target屬性設置爲_blank指定在新窗口中顯示該圖片;<img>標記的src屬性指定縮略圖的URL。   若是咱們想對顯示全尺寸圖片的窗口的外觀進行某些控制(好比但願彈出窗口的高度、寬度能與全尺寸圖片的大小匹配時),則可調用 window.open 方法,該方法接收三個參數,分別指定要打開文件的URL,窗口名及窗口特性,在窗口特性參數中可指定窗口的高度、寬度,是否顯示菜單欄、工具欄等。如下代碼將顯示全尺寸圖片在一個沒有工具欄、地址欄、狀態欄、菜單欄,寬、高分別爲400、350的窗口中: <a href="fullsize.jpg" onClick="window.open(this.href,'', 'height=350,width=400,toolbar=no,location=no,status=no,menubar=no');return false"><img src="small.jpg"></a>   這裏就提出了個問題,若是全部全尺寸圖片都具備統一的大小(好比都是400x350),那麼以上代碼適用於全部的縮略圖片連接(只是href屬性指向的全尺寸圖片文件不一樣)。但若是全尺寸圖片的大小並不統一,還用以上代碼則咱們須要先取得每幅全尺寸圖片的大小,而後在window.open方法的窗口特性參數中一一設置height和width爲正確的值,在圖片數量較多的狀況下,這顯然效率過低了。那麼是否有一勞永逸的方法,即讓彈出窗口能自動適應要顯示圖片的大小?經過研究,發現可使用 DHTML 中的 Image 對象來達到咱們的目的,Image 對象可動態裝載指定的圖片,經過讀取其 width 和 height 屬性即能得到裝入圖片的大小,以此來設置彈出窗口的大小,便可實現自適應圖片大小的彈出窗口了。下面便是實現代碼: <script language="javascript" type="text/javascript"> <!-- var imgObj; function checkImg(theURL,winName){ // 對象是否已建立 if (typeof(imgObj) == "object"){ // 是否已取得了圖像的高度和寬度 if ((imgObj.width != 0) && (imgObj.height != 0)) // 根據取得的圖像高度和寬度設置彈出窗口的高度與寬度,並打開該窗口 // 其中的增量 20 和 30 是設置的窗口邊框與圖片間的間隔量 OpenFullSizeWindow(theURL,winName, ",width=" + (imgObj.width+20) + ",height=" + (imgObj.height+30)); else // 由於經過 Image 對象動態裝載圖片,不可能當即獲得圖片的寬度和高度,因此每隔100毫秒重複調用檢查 setTimeout("checkImg('" + theURL + "','" + winName + "')", 100) } } function OpenFullSizeWindow(theURL,winName,features) { var aNewWin, sBaseCmd; // 彈出窗口外觀參數 sBaseCmd = "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,"; // 調用是否來自 checkImg if (features == null || features == ""){ // 建立圖像對象 imgObj = new Image(); // 設置圖像源 imgObj.src = theURL; // 開始獲取圖像大小 checkImg(theURL, winName) } else{ // 打開窗口 aNewWin = window.open(theURL,winName, sBaseCmd + features); // 聚焦窗口 aNewWin.focus(); } } //--> </script>   使用時將上面的代碼放在網頁文檔的<head></head>標記對中,而後在連接的點擊事件中調用OpenFullSizeWindow函數,如<a href="fullsize.jpg" onClick="OpenFullSizeWindow(this.href,'','');return false"><img src="small.jpg"></a>便可。 以上代碼在IE 5.x-6.0中測試經過。 9、 比較靈活的HTA窗口 我簡單介紹一下,HTA的全名爲HTML Application,翻譯過來就是HTML應用程序,你只要簡單的用.hta爲擴展名保存HTML頁面就算建立了一個HTA文件,下面咱們就用HTA來編個窗口,將如下這段代碼保存爲.hta文件,而後再用瀏覽器打開,會發現什麼?買個關子,本身去瞧瞧。 <HTML> <HEAD> <TITLE>http://www.okajax.com/</TITLE> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="myApp"   BORDER="thin"   BORDERSTYLE="normal"   CAPTION="yes"   ICON="filename.ico"   MAXIMIZEBUTTON="yes"   MINIMIZEBUTTON="yes"   SHOWINTASKBAR="no"   INGLEINSTANCE="no"   SYSMENU="yes"   VERSION="1.0"   WINDOWSTATE="normal" /> </HEAD> <BODY> <b>http://www.okajax.com/</b> </BODY> </HTML> 有人會發現上面這些代碼與平時的html有點不一樣,多了HTA:APPLICATION標籤,這就是關鍵之處,hta經過它來提供一系列面向應用程序的功能,接下來再講一講它的屬性(個人頭又在發脹) APPLICATIONNAME屬性(applicationName)   此屬性爲設置HTA的名稱。   BORDER屬性(border)   此屬性爲設置爲HTA的窗口邊框類型,默認值爲 thick。   它能夠設爲 thick 指定窗口爲粗邊框         dialog window 指定窗口爲對話框         none 指定窗口無邊框         thin 指定窗口爲窄邊框 BORDERSTYLE屬性(borderStyle)   此屬性爲設置HTA窗口的邊框格式,默認值爲 normal。   它能夠設爲    normal 普通邊框格式    complex 凹凸格式組合邊框    raised 凸出的3D邊框    static 3D邊框格式    sunken 凹進的3D邊框 CAPTION屬性(caption)   此屬性爲設置HTA窗口是否顯示標題欄或標題,默認值爲 yes。 ICON屬性(icon)   此屬性爲設置應用程序的圖標。 MAXIMIZEBUTTON屬性(maximizeButton)   此屬性爲設置是否在HTA窗口中顯示最大化按鈕,默認值爲 yes。 MINIMIZEBUTTON屬性(minimizeButton)   此屬性爲設置是否在HTA窗口中顯示最小化按鈕,默認值爲 yes。 SHOWINTASKBAR屬性(showInTaskBar)   此屬性爲設置是否在任務欄中顯示此應用程序,默認值爲 yes。 SINGLEINSTANCE屬性(singleInstance)   此屬性爲設置是否此應用程序同時只能運行一次。次屬性以APPLICATIONNAME屬性做爲標識,默認值爲 no。 SYSMENU屬性(sysMenu)   此屬性爲設置是否在HTA窗口中顯示系統菜單,默認值爲 yes。 VERSION屬性(version)   此屬性爲設置應用程序的版本,默認值爲空。 WINDOWSTATE屬性(windowState)   此屬性爲設置HTA窗口的初始大小,默認值爲 normal。   它能夠設爲 normal 默認大小         minmize 最小化         maximize 最大化 以上括號中的是在腳本引用的屬性。在腳本中以上屬性皆爲只讀屬性。此外,在腳本中還可使用commandLine屬性來檢索應用程序啓動時的參數。 在HTA中還能夠繼續使用html中的絕大多數標籤、腳本等。
相關文章
相關標籤/搜索