JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Web Design 版  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by browser at 2006-06-06 08:59
本主題所含的標籤
無標籤
作者 關於showModalDialog回传值的問題 [精華]
fans





發文: 1
積分: 0
於 2004-05-09 01:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
俺是个初学者想请教一下
用showModalDialog打开一个子窗口 ,
要如此把子窗口的内容传回到父窗口呢?比如把值传回到父窗口的<input type=text>里面?

3Q


reply to postreply to post
作者 Re:關於showModalDialog回传值的問題 [Re:fans]
zanta





發文: 78
積分: 4
於 2004-05-10 16:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如果在母視窗要用 window.showModalDialog() 來開啟子視窗的話,
就不能在子視窗使用 window.opener 屬性來存取母視窗 (文法很怪,但我不知道怎麼用文字描述比較好... Tongue)

我只想到下面這個解法,您參考看看。

首先,showModalDialog() 的用法如下 (from MSDN):
1
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])


由上得知這個 method 共有三個 input 參數,分別是 sURL, vArguments 與 sFeature,除了 sURL 為目標網頁必須填寫之外,後兩個皆非必要參數。

我的想法是,您在母視窗要使用 showModalDialog() 來打開一個子視窗時,將準備接收值的物件 (myObj) 帶進 vArguments,子視窗只要取出該物件即取得母視窗中 myObj 的參照
這樣一來,您就可以直接對該物件進行操作,就跟您直接在母視窗中操作 myObj 是一樣的。

呃,上面的敘述好像還是很難懂... Black Eye 我附上兩個 html 來舉例好了...
請分別將兩段程式存檔,若檔名不是 AA.htm 與 BB.htm 的話請自行修改相關名稱。

這是母視窗 AA.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form id="getForm">
    回傳值:<input type="text" id="getData" readOnly>
</form>
 
<input type="button" value="開啟" onClick="openWin()">
 
<script language="JavaScript">
    function openWin()
    {
        var srcFile = "BB.htm";    //指定子視窗的位置與檔名
        var winFeatures = "dialogHeight:300px; dialogLeft:200px;";
 
        var obj = getForm;  //將物件傳遞到新視窗中
        
        window.showModalDialog(srcFile, obj, winFeatures);
    }
</script>


接下來是子視窗 BB.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form id="sendForm">
    請輸入資料:<input type="text" id="writeData">
    <input type="button" value="送出" onClick="send(sendForm.writeData.value);">
</form>
 
<script language="JavaScript">
    function send(val)
    {
        //取得前一頁所傳過來的物件
        var myObj = window.dialogArguments;
 
        //賦值
        myObj.getData.value = val;
 
        //若不須將子視窗關閉,則註解掉下面這行。
        window.close();
    }
</script>


程式流程就是,由 AA.htm 打開 BB.htm,操作者在 BB.htm 輸入資料後按下送出鍵,該資料即顯示在 AA.htm 中。

幾個關鍵地方我都用紅色標起來了,您可以加以修改符合您的需求。

test_showModalDialog.rar (0.55k)


reply to postreply to post
作者 Re:關於showModalDialog回传值的問題 [Re:fans]
wenwen





發文: 12
積分: 0
於 2006-06-06 08:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
zanta謝謝你,你講解得真詳細。Smile

reply to postreply to post
» JWorld@TW »  Web Design 版

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8