亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS子父窗口互相操作取值賦值的方法介紹

2019-11-20 22:43:28
字體:
來源:轉載
供稿:網友

$("#父窗口元素ID",window.parent.document);

對應javascript版本為window.parent.document.getElementByIdx_x("父窗口元素ID");

取父窗口的元素方法:$(selector, window.parent.document);
那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);

類似的,取其它窗口的方法大同小異
$(selector, window.top.document);
$(selector, window.opener.document);
$(selector, window.top.frames[0].document);

--------------------------------------------------------------------------------------------------

子窗口創建及父窗口與子窗口之間通信:

1、Javascript彈出子窗口

可以通過多種方式實現,下面介紹幾種方法

(1) 通過window對象的open()方法,open()方法將會產生一個新的window窗口對象

其用法為:
window.open(URL,windowName,parameters);

URL: 描述要打開的窗口的URL地址,如何為空則不打開任何網頁;

windowName:描述被打開的窗口的民稱,可以使用'_top'、'_blank'等內建名稱,這里的名稱跟<a href="..." target="...">里的target屬性是一樣的。

parameters:描述被打開的窗口的參數值,或者說是樣貌,其包括窗口的各個屬性值,及要傳入的參數值。

例如:

打開一個 400 x 100 的干凈的窗口:
open('','_blank','width=400,height=100,menubar=no,toolbar=no,
location=no,directories=no,status=no,scrollbars=yes,resizable=yes')

也可以這樣寫: var newWindow = open('','_blank');

參數說明如下:

top=# 窗口頂部離開屏幕頂部的像素數
left=# 窗口左端離開屏幕左端的像素數
width=# 窗口的寬度
height=# 窗口的高度
menubar=... 窗口有沒有菜單,取值yes或no
toolbar=... 窗口有沒有工具條,取值yes或no
location=... 窗口有沒有地址欄,取值yes或no
directories=... 窗口有沒有連接區,取值yes或no
scrollbars=... 窗口有沒有滾動條,取值yes或no
status=... 窗口有沒有狀態欄,取值yes或no
resizable=... 窗口給不給調整大小,取值yes或no


(2) 在javascript中除了通過open()方法建立window對象實現彈出窗口外,還可以通過建立對話框的方式彈出窗口。
如:
alert(""); //彈出信息提示對話框
confirm(""); //彈出信息確認對話框
prompt(""); //具有交互性質的對話框

但是,上述實現的彈出窗口具有的功能較為單一,只能完成較為簡單的功能。對于需要在對話框中顯示多個數據信息,

甚至是HTML控件就無能為力了。

(3) 使用模態對話框實現復雜的對話框需求
在javascript的內建方法中還有一類方法可以實現通過對話框顯示HTML內容,
也就是說可以通過創建對話框的方式來完成創建窗口對象所能完成的功能。
包括創建模態對話框和非模態對話框兩種。

實現方法為:

//創建模態你對話框
window.showModalDialog(sURL,vArguments,sFeatures)


//創建非模態對話框
window.showModelessDialog(sURL,vArguments,sFeatures)

其區別在于:

用showModelessDialog()打開窗口時,不必用window.close()去關閉它,當以非模態方式[IE5]打開時,打開對話框

的窗口仍可以進行其他的操作,即對話框不總是最上面的焦點,當打開它的窗口URL改變時,它自動關閉。而模態[IE4]方式的對話框始終有焦點(焦點不可移走,直到它關閉)。模態對話框和打開它的窗口相聯系,因此我們打開另外的窗口時,他們的鏈接關系依然保存,并且隱藏在活動窗口的下面。 showModeDialog()則不然。

參數說明:

sURL:必選參數,類型:字符串。

用來指定對話框要顯示的文檔的URL。

vArguments:可選參數,類型:變體。

用來向對話框傳遞參數。傳遞的參數類型不限,包括數組等。對話框通過window.dialogArguments來取得傳遞進來的參數。

sFeatures:選參數,類型:字符串。

用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。

dialogHeight:對話框高度

不小于100px,IE4中dialogHeight和dialogWidth 默認的單位是em,而IE5中是px,為方便其見,在定義modal方式的對話框時,用px做單位。

dialogWidth: 對話框寬度。

dialogLeft: 距離桌面左的距離。

dialogTop: 離桌面上的距離。

center: 窗口是否居中

默認yes,但仍可以指定高度和寬度,取值范圍{yes | no | 1 | 0 }。

help: 是否顯示幫助按鈕

默認yes,取值范圍 {yes | no | 1 | 0 }。

resizable: 是否可被改變大小。

默認no,取值范圍 {yes | no | 1 | 0 } [IE5+]。

status: 是否顯示狀態欄。

默認為yes[ Modeless]或no[Modal],

取值范圍{yes | no | 1 | 0 } [IE5+]。

scroll:指明對話框是否顯示滾動條。

默認為yes,取值范圍{ yes | no | 1 | 0 | on | off }。

還有幾個屬性是用在HTA中的,在一般的網頁中一般不使用。

dialogHide:在打印或者打印預覽時對話框是否隱藏。

默認為no,取值范圍{ yes | no | 1 | 0 | on | off }。

edge:指明對話框的邊框樣式。

默認為raised,取值范圍{ sunken | raised }。

unadorned:默認為no,取值范圍{ yes | no | 1 | 0 | on | off }。

傳入參數:

要想對話框傳遞參數,是通過vArguments來進行傳遞的。類型不限制,對于字符串類型,最大為4096個字符。也可以傳遞對象

例如:

var newWin=window.showModalDialog(url,window,'dialogHeight:500px, dialogLeft:100px, dialogTop:100px,

dialogWidth:300px, status:0, edge:sunken');

newWin.open();

與使用window.open()方法創建窗口相比,模態方法創建窗口的區別在于有模態方法創建的窗口后將不能操作父窗口.


2、子窗口與父窗口間通信

(1) 使用window.open()創建的窗口與父窗口通信
可以在子窗口頁面中通過window.opener來獲取父窗口對象,獲取之后子窗口便可以對父窗口執行刷新,傳值等操作。
如:
window.opener.location.reload(); //子窗口刷新父窗口
window.opener.location.href //獲取父窗口href
window.opener.locaiton.pathname //獲取父窗口路徑名

//刷新父頁面
window.location.href=window.location.href ; //重新定位父頁面
window.location.reload;


(2) 模態窗口與父窗口通信
通過使用showModelDialog(),及showModelessDialog()方法創建的子窗口想與父窗口通信時,不能通過window.opener

來獲取父窗口對象。要實現通信,必須在創建模態子窗口時向子窗口傳入父窗口對象。

實現方式為:

在父窗口中:

var newWin=window.showModelDialog(url,window,'');
newWin.open();

此時參數window即是父窗口對象

在子窗口中:

需首先獲取父窗口對象,然后才能使用父窗口對象。由于父窗口對象是在創建
子窗口時通過傳入參數的方式傳入的,因此,在子窗口中也只能通過獲取窗口參數的方式獲取父窗口對象。獲取方式如下:

var parent=widnow.dialogArguments;
變量parent便是父窗口對象。

例如:

//通過子窗口提交父窗口中的表單:form1,提交后執行查詢操作
var parent=window.dialogArguments;
parent.document.form1.action="QueryInfor.jsp";
parent.submit();

//刷新父頁面
var parent=window.dialogArguments;
parent.location.reload();

//從子窗口傳值到父窗口
要實現在模態子窗口中傳值到父窗口,需要使用window.returnValue完成

實現方法如下:

在子窗口中:

//獲取父窗口某字段值,對該值加一后返回父窗口
var parent=window.dialogArguments;
var x=parent.docuement.getElementById("age").value;
x=x+1;

//傳回x值
window.returnValue=x;

在父窗口中:

//獲取來自子窗口的值
var newWin=window.showModelDialog(url,window,'');
if(newWin!=null)
document.getElementByIdx_x("age").value=newWin;

//在子窗口中設置父窗口的值
在子窗口中向父窗口中傳入值似乎沒有直接設置父窗口中的值來得明了。直接設置父窗口中元素的值顯得要更靈活一些,不過具體使用哪種方法要根據實際情況和已有的實現方式而定,因為如果使用了不切實際的方法不僅降低開發效率,也降低了執行效率,往往也會造成不優雅的實現方式和代碼風格。

子窗口設置父窗口的值使用方法如下:

子窗口中:

var parent=window.dialogArguments;
var x=parent.document.getElementByIdx_x("age").value;
x=x+1;
//設置父窗口中age屬性值
parent.document.getElementByIdx_x("age").value=x;

以上是我在項目中使用javascript解決子窗口問題時,收集及積累的一些方法和資料。我是使用建立模態窗口的方式來實現的(這主要與項目本身有關),不過其實不論是使用window.open()還是使用window.showModelDialog()進行傳參等操作時雖然在實現方法上有很大的差別,初次接觸會覺得有點亂,但只要理清子窗口與父窗口之間的關系和角色之后,就很好理解了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日av在线播放中文不卡| 中文字幕久久久| 性视频1819p久久| 69av成年福利视频| 久久av在线看| 欧美性猛交xxxx偷拍洗澡| 久久久久久久久久久91| 日韩精品有码在线观看| 欧美一区二区三区免费观看| 日韩av在线影院| 国产日产欧美精品| 国产91精品高潮白浆喷水| 色无极影院亚洲| 国产91色在线|免| 中文字幕亚洲欧美日韩高清| 亚洲日韩欧美视频| 成人免费视频a| 岛国视频午夜一区免费在线观看| 亚洲精品福利视频| 在线电影中文日韩| 亚洲精品第一页| 国产精品视频一| 欧美性xxxxxxxxx| 欧美国产日韩一区二区在线观看| 2019中文字幕免费视频| 国产成人精品999| 欧美日韩色婷婷| 欧洲亚洲免费视频| 国产va免费精品高清在线| 久久九九热免费视频| 精品国产91乱高清在线观看| 欧美日韩中文字幕日韩欧美| 欧美黑人xxxx| 亚洲天天在线日亚洲洲精| 日韩精品免费一线在线观看| 亚洲精美色品网站| 精品成人在线视频| 国产+人+亚洲| 中文字幕亚洲欧美在线| 免费av在线一区| 欧美成人h版在线观看| 亚洲自拍偷拍色图| 欧美黄色成人网| www.日韩不卡电影av| 欧美一级淫片videoshd| 正在播放国产一区| 日韩在线观看成人| 黑人精品xxx一区| 精品成人在线视频| 欧美色道久久88综合亚洲精品| 久久人人爽人人爽人人片av高请| 欧美在线国产精品| 97国产成人精品视频| 91免费高清视频| 欧美激情精品久久久久久| 亚洲大胆美女视频| 97在线视频免费观看| 亚洲自拍偷拍视频| 国产欧美精品xxxx另类| 超碰97人人做人人爱少妇| 欧美电影院免费观看| 国产精品美女视频网站| 精品日韩视频在线观看| 国产精品视频专区| 日韩欧美精品免费在线| 亚洲性无码av在线| 日韩女在线观看| 久久九九热免费视频| 庆余年2免费日韩剧观看大牛| 成人网页在线免费观看| 亚洲精品久久久久国产| 久热在线中文字幕色999舞| 国产亚洲人成a一在线v站| 岛国精品视频在线播放| 国产综合色香蕉精品| 日本sm极度另类视频| 日韩在线观看免费网站| 超碰日本道色综合久久综合| 国产一区二区三区在线观看网站| 久久理论片午夜琪琪电影网| 91美女福利视频高清| 日韩精品在线第一页| 成人黄在线观看| 日本高清视频精品| 亚洲国产高潮在线观看| 精品国产一区二区三区四区在线观看| 亚洲乱亚洲乱妇无码| 亚洲欧美另类国产| 欧美电影免费播放| 欧美一区二区三区免费观看| 成人av在线网址| 亚洲天堂久久av| 91热精品视频| 欧美与黑人午夜性猛交久久久| 国产噜噜噜噜久久久久久久久| 精品亚洲国产视频| 亚洲黄色av女优在线观看| 日韩av影片在线观看| 最近2019中文字幕大全第二页| 国产精品99一区| 91po在线观看91精品国产性色| 黄网站色欧美视频| 啪一啪鲁一鲁2019在线视频| 亚洲欧美色婷婷| 91精品国产91久久久久福利| 视频直播国产精品| 亚洲精品视频免费| 国产丝袜一区视频在线观看| 亚洲国产美女精品久久久久∴| 欧美大成色www永久网站婷| 狠狠躁夜夜躁人人爽超碰91| 久久免费视频网| 国产v综合v亚洲欧美久久| 欧美人与性动交| 日韩欧美中文第一页| 国产精品老女人精品视频| 粗暴蹂躏中文一区二区三区| 中文字幕亚洲无线码a| 国产亚洲精品美女| 国产精品色午夜在线观看| 日韩激情视频在线播放| 原创国产精品91| 91在线色戒在线| 亚洲美女av在线| 中文字幕日韩av电影| 中文字幕精品久久久久| 亚洲娇小xxxx欧美娇小| 国产成人综合亚洲| 精品一区二区亚洲| 日本成人在线视频网址| 日产日韩在线亚洲欧美| 国产偷亚洲偷欧美偷精品| 亚洲国产高清自拍| 亚洲国产另类 国产精品国产免费| 欧美日韩在线视频一区| 亚洲精品中文字幕有码专区| 福利视频导航一区| 亚洲精品国产电影| 亚洲精品色婷婷福利天堂| 欧美乱大交做爰xxxⅹ性3| 亚洲精品动漫久久久久| 日韩精品电影网| 中文字幕欧美在线| 亚洲精品乱码久久久久久按摩观| 国产男人精品视频| 奇米成人av国产一区二区三区| 精品久久久久久亚洲精品| 国产成人精品日本亚洲专区61| 国产精品揄拍500视频| 久久亚洲私人国产精品va| 美女性感视频久久久| 中文字幕一区日韩电影| 国产精品久久久久久亚洲调教| 国产91九色视频| 日韩在线观看免费高清完整版| 91免费观看网站| 欧美日韩一区二区免费视频| 亚洲精品av在线播放| 亚洲永久免费观看| 97久久久免费福利网址| 日韩欧美中文免费| 亚洲成人精品久久| 欧美成人在线网站| 欧美成人免费全部观看天天性色|