window.open("index.aspx",'top');?只是表示打開這個(gè)頁面,并不是打開并刷新index.aspx
window.location.href="index.aspx"; 表示重新定向到新頁面,同時(shí)刷新打開的這個(gè)頁面;
eg:
進(jìn)行中項(xiàng)目
onclick="javascript:window.open('ProjectList.aspx?flag=0','_top');"/>
這兩個(gè)的效果不同
眾所周知有關(guān)重定向分為前端(js)重定向和后臺(tái)重定向。
在asp.net中遇到了頁面1使用html按鈕重定向問題,由于之前使用了window.open打開新的網(wǎng)頁,但是從此頁退回后第二次進(jìn)入,則后臺(tái)不會(huì)發(fā)生pageload事件(注意此處是第二次進(jìn)入),當(dāng)然不會(huì)捕捉到postback這個(gè)事件,懷疑是直接調(diào)用緩存里面的文件。
改為window.location.href()后問題解決,或者使用后臺(tái)的Response.Redirect()問題一樣解決。
但是又遇到了IE和firefox兼容問題,在網(wǎng)上找到的答案如下:window.location='UserAdd.aspx';"
還遇到了個(gè)問題超級(jí)鏈接怎么才能夠跳出框架(firefox中),網(wǎng)上查到答案:
改為注冊
1.window.location是window對象的屬性,而window.open是window對象的方法
window.location是你對當(dāng)前瀏覽器窗口的URL地址對象的參考!
window.open是用來打開一個(gè)新窗口的函數(shù)!
2.window.open不一定是打開一個(gè)新窗口!!!!!!!!
只要有窗口的名稱和window.open中第二個(gè)參數(shù)中的一樣就會(huì)將這個(gè)窗口替換,用這個(gè)特性的話可以在iframe和frame中來代替location.href。
如
和
onclick="self.frames['aa'].location.href='1.htm'">的效果一樣
3.
在給按鈕、表格、單元格、下拉列表和DIV等做鏈接時(shí)一般都要用Javascript來完成,和做普通鏈接一樣,可能我們需要讓鏈接頁面在當(dāng)前窗口打開,也可能需要在新窗口打開,這時(shí)我們就可以使用下面兩項(xiàng)之一來完成:
window.open 用來打開新窗口
window.location 用來替換當(dāng)前頁,也就是重新定位當(dāng)前頁
可以用以下來個(gè)實(shí)例來測試一下。
4.
window.location或window.open如何指定target?
這是一個(gè)經(jīng)常遇到的問題,特別是在用frame框架的時(shí)候
解決辦法:
window.location 改為 top.location 即可在頂部鏈接到指定頁
或
window.open("你的網(wǎng)址","_top");
5.
window.open 用來打開新窗口
window.location 用來替換當(dāng)前頁,也就是重新定位當(dāng)前頁
用戶不能改變document.location(因?yàn)檫@是當(dāng)前顯示文檔的位置)。
window.location本身也是一個(gè)對象。
但是,可以用window.location改變當(dāng)前文檔 (用其它文檔取代當(dāng)前文檔),而document.location不是對象。
服務(wù)器重定向后有可能使document.url變動(dòng),但window.location.href指的永遠(yuǎn)是訪問該網(wǎng)頁時(shí)用的URL.
大多數(shù)情況下,document.location和location.href是相同的,但是,當(dāng)存在服務(wù)器重定向時(shí),document.location包含的是已經(jīng)裝載的URL,而location.href包含的則是原始請求的文檔的URL.
7.
window.open()是可以在一個(gè)網(wǎng)站上打開另外的一個(gè)網(wǎng)站的地址
而window.location()是只能在一個(gè)網(wǎng)站中打開本網(wǎng)站的網(wǎng)頁
window.open()詳解
因?yàn)橹且欢蝚avascripts代碼,所以它們應(yīng)該放在標(biāo)簽和之間。是對一些版本低的瀏覽器起作用,在這些老瀏覽器中不會(huì)將標(biāo)簽中的代碼作為文本顯示出來。
要養(yǎng)成這個(gè)好習(xí)慣啊。
window.open ('page.html') 用于控制彈出新的窗口page.html,如果page.html不與主窗口在同一路徑下,前面應(yīng)寫明路徑,絕對路徑(http://)和相對路徑(../)均可。用單引號(hào)和雙引號(hào)都可以,只是不要混用。這一段代碼可以加入HTML的任意位置,和之間可以,間也可以,越前越早執(zhí)行,尤其是頁面代碼長,又想使頁面早點(diǎn)彈出就盡量往前放。
經(jīng)過設(shè)置后的彈出窗口
下面再說一說彈出窗口的設(shè)置。只要再往上面的代碼中加一點(diǎn)東西就可以了。 我們來定制這個(gè)彈出的窗口的外觀,尺寸大小,彈出的位置以適應(yīng)該頁面的具體情況。
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //這句要寫成一行
-->
參數(shù)解釋:
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側(cè)的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動(dòng)欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態(tài)欄內(nèi)的信息(通常是文件已經(jīng)打開),yes為允許;
用函數(shù)控制彈出窗口:
下面是一個(gè)完整的代碼。
function openwin() {
window.open ("page.html", "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //寫成一行
}
//-->
任意的頁面內(nèi)容...
< ml>
這里定義了一個(gè)函數(shù)openwin(),函數(shù)內(nèi)容就是打開一個(gè)窗口。在調(diào)用它之前沒有任何用途。怎么調(diào)用呢?
方法一: 瀏覽器讀頁面時(shí)彈出窗口;
方法二: 瀏覽器離開頁面時(shí)彈出窗口;
方法三:用一個(gè)連接調(diào)用:
注意:使用的“#”是虛連接。
方法四:用一個(gè)按鈕調(diào)用:
同時(shí)彈出兩個(gè)窗口
對源代碼稍微改動(dòng)一下:
function openwin() {
window.open ("page.html", "newwindow", "height=100, width=100, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o, status=no")//寫成一行
window.open ("page2.html", "newwindow2", "height=100, width=100, top=1 00, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, loca tion=no, status=no")//寫成一行
}
//-->
為避免彈出的2個(gè)窗口覆蓋,用top和left控制一下彈出的位置不要相互覆蓋即可 。最后用上面說過的四種方法調(diào)用即可。
注意:2個(gè)窗口的name(newwindows和newwindow2)不要相同,或者干脆全部為空。
【主窗口打開文件1.htm,同時(shí)彈出小窗口page.html】
如下代碼加入主窗口區(qū):
function openwin() {
window.open("page.html","","width=200,height=200")
}
//-->
加入?yún)^(qū):
open即可。
【彈出的窗口之定時(shí)關(guān)閉控制】
下面我們再對彈出的窗口進(jìn)行一些控制,效果就更好了。如果我們再將一小段 代碼加入彈出的頁面(注意是加入page.html的HTML中,可不是主頁面中,否則 ...),讓它10秒后自動(dòng)關(guān)閉是不是更酷了?
首先,將如下代碼加入page.html文件的區(qū):
function closeit()
{
setTimeout("self.close()",10000) //毫秒
}
然后,再用 這一句話代替page.html中原有的這一句就可以了。(這一句話千萬不要忘記寫??!這一句的作用是調(diào)用關(guān)閉窗 口的代碼,10秒鐘后就自行關(guān)閉該窗口。)
【在彈出窗口中加上一個(gè)關(guān)閉按鈕】
openwin()
document.cookie="popped=yes"
}
}
然后,用(注意不是openwin而是loadpop?。。┨鎿Q主頁面中原有的這一句即可。你可以試著刷新一下這個(gè)頁面或重新進(jìn) 入該頁面,窗口再也不會(huì)彈出了。
注意:
1.
window.location.Reload()和window.location.href=window.location.href;
都是刷新當(dāng)前頁面。
self.location.reload();?? //也是刷新本頁的意思;
2.
用window.open()打開新頁面
但是用window.location.href="" 卻是在原窗口打開的.
有時(shí)瀏覽器會(huì)一些安全設(shè)置window.open肯定被屏蔽。例如避免彈出廣告窗口。