国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js模式化窗口問題![window.dialogArguments]

2024-05-06 16:32:39
字體:
來源:轉載
供稿:網友

前些天做項目時遇到了個瀏覽器兼容問題,解決后記錄一下,也將模式化的資料放上!

詳細問題描述:

在火狐瀏覽器中彈出一個子窗口,子頁面中是一個分頁,點下一頁后子頁面會刷新,然后window.dialogArguments對象就丟失了,alert輸出顯示undefined [解決方法見第三項]

最近做網站的時候需要用到模式化窗口功能,也遇到了一些問題,所以查了查資料以解決

1.彈出窗口幾種方法:

a.window.open(pageURL,name,parameters);
b.window.showModalDialog()方法用來創建一個顯示HTML內容的模態對話框(IE 4+支持)
c.window.showModelessDialog()方法用來創建一個顯示HTML內容的非模態對話框(IE 5+支持)

2.顯示樣式問題:所用到的是window.showModalDialog(),此方法彈出的窗口在IE6下顯示比IE7 ,IE8 下高度要小點,所以你可以寫個js 解決這點(IE6下高度需要+35PX左右, dialogLeft 屬性可以根據屏幕寬度設置)
代碼片段如下:

 var swidth=window.screen.width; if(parseInt(width)>swidth) swidth=100; else swidth=(swidth-parseInt(width))/2;varwindowStatus="dialogWidth:"+width+"px;dialogHeight:"+height+"px;dialogTop:80px;dialogLeft:"+swidth+"px;center:1;status:no;scroll:no;resizable:no;help:no;"; //彈出方法 if(url.indexOf("?")<0){window.showModalDialog(url+'?setTime='+newDate().getTime(),obj,windowStatus);} else{window.showModalDialog(url+'&setTime='+newDate().getTime(),obj,windowStatus);}

3.dialogArguments對象FF瀏覽器中丟失問題: 彈出showModalDialog窗口中需要分頁顯示數據,點擊頁面中的信息,獲取分頁數據的ID,傳給彈出的父窗口。在IE下運行很正常,但在FireFox 3.0中運行時,如果頁面不跳轉則可以正常的調用window.dialogArguments,若頁面一跳轉則會丟失window.dialogArguments的引用

現給出2種解決方法:

a.將showModalDialog窗口的頁面放在frameset或者iframe里面,進行一次包裝。
例:
window.showModalDialog("test.aspx");

test.aspx 頁面內容

<frameset cols="0,*"><frame src=""/><frame src="分頁顯示數據的頁面"/></frameset> 

頁面返回方法變成

function returnValue(flag){ var myObj = window.parent.dialogArguments; myObj.value = flag; window.parent.close();}

這樣就可以拿到返回的值了

b. 如果不想多弄出來個頁面,可以用下面的方法,此方法可以用到了window.opener.document 對象,此對象IE7,IE8貌似都不支持(本人測試過,不知道在你機器上咋樣),判斷下是什么瀏覽器,然后給父頁面的隱藏域賦值,然后父頁面再處理;

代碼如下:

function returnValue(flag) { document.getElementById("rValue").value=flag; if (window.ActiveXObject) //IE瀏覽器  { var myObj = window.dialogArguments; //alert(myObj); myObj.value = flag; window.close(); } else{ window.opener.document.getElementById("hid_oilid").value=flag; window.opener.document.getElementById("txt_oil").value=flag+"號"; //self.close(); window.close(); }  }

基本所遇到問題均已經解決,關于父頁面與子頁面傳值可以多參閱其他資料


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中江县| 军事| 镇康县| 山东省| 平江县| 山阴县| 嘉黎县| 察哈| 凤山县| 祥云县| 镇康县| 荥阳市| 年辖:市辖区| 察隅县| 马公市| 巴南区| 桦甸市| 扶余县| 紫金县| 西乌珠穆沁旗| 翁牛特旗| 永宁县| 梁平县| 凉城县| 金堂县| 申扎县| 紫云| 应用必备| 安阳县| 绩溪县| 余姚市| 辽宁省| 咸阳市| 枝江市| 闸北区| 广河县| 鸡泽县| 玉山县| 江门市| 沾益县| 印江|