artdialog彈出層open頁(yè)面iframe間數(shù)據(jù)傳遞
發(fā)布日期:2023/2/28 8:34:06 瀏覽量:
“artdialog彈出層open頁(yè)面iframe間數(shù)據(jù)傳遞”是什么意思?,實(shí)例解析:
頁(yè)面中,調(diào)用artDialog插件的artDialog.open()方法打開a頁(yè)面:iframeA.html,在a頁(yè)面中再調(diào)用artDialog.open()方法打開b頁(yè)面:iframeB.html,點(diǎn)擊b頁(yè)面內(nèi)一鏈接,要將b頁(yè)面的數(shù)據(jù)傳遞到a頁(yè)面中,這就是上文所說(shuō)的“artdialog彈出層open頁(yè)面iframe間數(shù)據(jù)傳遞”,具體操作可看下面的gif動(dòng)畫示例圖(注意a頁(yè)面標(biāo)紅文字的變化):
要實(shí)現(xiàn)示例圖片中的效果,這里涉及到2個(gè)問題要處理:
1、要傳遞的數(shù)據(jù)怎么保存,方便在各個(gè)Iframe頁(yè)面中操作該數(shù)據(jù)
使用art.dialog.data()方法實(shí)現(xiàn);
基本用法:
添加:art.dialog.data(變量名,值); // 跨框架數(shù)據(jù)共享接口,保存在頂層框架下面
刪除:art.dialog.removeData(變量名);
2、b頁(yè)面點(diǎn)擊確定按鈕后,怎么操作b頁(yè)面元素,關(guān)鍵在于怎么獲取b頁(yè)面的文檔對(duì)象?
最直接的操作方法:
art.dialog.open(’xx.html’, {
ok:function(ifrWin,topWin){ //ifrWin:iframe window對(duì)象,topWin:頂級(jí)頁(yè)面 window對(duì)象
var ifrDoc=ifrWin.document; // iframe document對(duì)象,能獲取到這個(gè)查找元素自然就沒什么難度啦!
}
})
或
art.dialog.open(’xx.html’, {
ok:function(){
var ifrWin= this.iframe.contentWindow,
ifrDoc=this.iframe.contentDocument; //ifrWin:iframe window對(duì)象; ifrDoc: iframe document對(duì)象
}
})
另外,開發(fā)中比較常見的應(yīng)用場(chǎng)景是:b頁(yè)面里面是一系列的表單,點(diǎn)確定按鈕后如果表單有漏洞填或不符合填寫規(guī)則,則阻止關(guān)閉彈窗,并在彈窗頁(yè)面內(nèi)給出錯(cuò)誤提示,關(guān)鍵代碼:
art.dialog.open(’xx.html’, {
ok:function(ifrWin,topWin){
var noError=ifrWin.formOk(); // 調(diào)用b頁(yè)面定義的formOk()方法,檢測(cè)彈窗表單填寫是否符合規(guī)則,完全符合返回true,有誤則返回false;
if(!noError) return false; //阻止關(guān)閉彈窗
}
})
使用art.dialog.opener屬性:
在b頁(yè)面獲取open方法觸發(fā)來(lái)源a頁(yè)面window對(duì)象,然后art.dialog.opener.document,是可以獲取到a頁(yè)面的文檔對(duì)象的 (注意這個(gè)b頁(yè)面中也必須引用artDialog腳本文件)
需要注意的是:
調(diào)用觸發(fā)多個(gè)彈窗時(shí),使用art.dialog.open()和 top.art.dialog.open()2種寫法打開b頁(yè)面,再在b頁(yè)面中調(diào)用art.dialog.opener,獲取到的 觸發(fā)來(lái)源頁(yè)面的window對(duì)象是不一樣的:前者得到的是open方法觸發(fā)來(lái)源a頁(yè)面window對(duì)象,后者得到的始終是頂級(jí)父頁(yè)面window對(duì)象!
調(diào)用artDialog.open()方法打開a頁(yè)面時(shí),指定id屬性為a,該屬性可用來(lái)標(biāo)識(shí)a頁(yè)面,寫入數(shù)據(jù)時(shí)使用top.art.dialog.list["a"].iframe.contentDocument獲取到a頁(yè)面的文檔對(duì)象,但之法比較冗長(zhǎng),推薦上面的寫法!
源碼中的top.art.dialog.list的寫法,必須指定top,否則art.dialog.list["a"]會(huì)返回undefined,而且調(diào)用close()方法關(guān)閉artdialog彈出層時(shí),artdialog會(huì)報(bào)“Uncaught TypeError: Cannot read property ’close’ of undefined”錯(cuò)誤提示,具體如下圖:
另外artdialog關(guān)閉彈窗方法,寫法:
- ok()/cancel() 方法中,調(diào)用this.close();
- art.dialog.open.api.close();(b頁(yè)面獲取open方法擴(kuò)展方法)
- art.dialog.list[指定id].close()(獲取artdialog實(shí)例對(duì)象,進(jìn)而獲取實(shí)例對(duì)象下的close()方法)
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生