javascript中window.open()與window.location.href的區(qū)別

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è)窗口

注意:使用的“#”是虛連接。

方法四:用一個(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肯定被屏蔽。例如避免彈出廣告窗口。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容