MozTW 討論區 https://forum.moztw.org/ |
|
Firefox 1.0 與 iframe 的配合 https://forum.moztw.org/viewtopic.php?f=13&t=4973 |
第 1 頁 (共 1 頁) |
發表人: | Ada [ 2004-12-17, 12:00 ] |
文章主題 : | Firefox 1.0 與 iframe 的配合 |
因為大老闆的要求,在傳送資料回 Web Server 時頁面不可以有空白頁的行為,所以使用了以下的技巧來應付: 代碼: <iframe name="process" src="image.gif" style="display: none;"></iframe> <form target="process"> ... </form> 然後當 iframe 內的處理作業結束後,再透過 target 的設定將將 focus 從 iframe 移到 parent 中: 代碼: <body onload="form1.submit();">
<form name="form1" action="http://other.content.provider.com.tw" target="_top"> ... </form> 今天在測試時突然發現似乎 Firefox 不會將 focus 從 iframe 內移出到 _top 或 _parent 中,這是 Firefox 的 Bug 嗎?還是說有另外的設定方式? 麻煩伙伴們了,謝謝! |
發表人: | BobChao [ 2004-12-17, 15:39 ] |
文章主題 : | |
Ada 寫: 代碼: <iframe name="process" src="image.gif" style="display: none;"></iframe> 其他先不論,我似乎有種模糊的印象:把 display 設定為 none 之後,其中的元素就不會載入了(就是,根本不會去讀取 image.gif)。或許您得先實驗一下... |
發表人: | Nelson [ 2004-12-17, 21:03 ] |
文章主題 : | |
BobChao 寫: Ada 寫: 代碼: <iframe name="process" src="image.gif" style="display: none;"></iframe> 其他先不論,我似乎有種模糊的印象:把 display 設定為 none 之後,其中的元素就不會載入了(就是,根本不會去讀取 image.gif)。或許您得先實驗一下... 我不知bob兄講得對不對,不過若真的是這樣, 那改成 visibility="hidden" 應該就可以了 ![]() |
發表人: | Ada [ 2004-12-20, 11:07 ] |
文章主題 : | |
Nelson 寫: BobChao 寫: Ada 寫: 代碼: <iframe name="process" src="image.gif" style="display: none;"></iframe> 其他先不論,我似乎有種模糊的印象:把 display 設定為 none 之後,其中的元素就不會載入了(就是,根本不會去讀取 image.gif)。或許您得先實驗一下... 我不知bob兄講得對不對,不過若真的是這樣, 那改成 visibility="hidden" 應該就可以了 ![]() 剛試了一下... visibility 會造成畫面上方留下一塊空白的 iframe 區... ![]() 其實那個 image.gif 有沒有載入無所謂(原先是沒設定的,但會造成 https 失效才找了張圖塞在那邊 ) ,重點是 focus 的切換不能這樣做的話,那... 在 firefox 上有沒有啥 idea 可以達到類似的效果?(IE 可以這樣玩) 1. 在驗證動作時原畫面不可以改變。 2. 若驗證失敗,則在原畫面上彈出錯誤視窗 ( alert() )。 3. 若驗證成功,則將某些資料以 form post 的方式交付給遠端網站,同時畫面還給遠端網站。 |
發表人: | Carousel [ 2004-12-20, 16:58 ] |
文章主題 : | |
Ada 寫: 1. 在驗證動作時原畫面不可以改變。 2. 若驗證失敗,則在原畫面上彈出錯誤視窗 ( alert() )。 3. 若驗證成功,則將某些資料以 form post 的方式交付給遠端網站,同時畫面還給遠端網站。 原則上, 我的看法是匠子 代碼: <iframe name="process" style="display: none;"></iframe> <form target="process" action="XXXXX"> .............. </form> 您的例子中, iframe 中, src 可以不寫, 不用隨便放個東西無所謂 XXXX 的內容,基本上是驗證,驗證錯誤, 跳一個訊息(alert())出來沒什麼大問題, 問題是驗證過後 我建議:驗證歸驗證, 顯示歸顯示, 兩支程式 通常您在驗證過後,該作的都已經作了(存cookies, 寫 session 什麼的) , 作完動作就直接轉址到該頁面去 代碼: 驗證部份.....
沒通過, alert(); 通過了 <script>window.parent.location='http://moztw.org';</script> 匠子,應可以達到您的要求 |
發表人: | Ada [ 2004-12-21, 14:18 ] |
文章主題 : | |
Carousel 寫: Ada 寫: 1. 在驗證動作時原畫面不可以改變。 2. 若驗證失敗,則在原畫面上彈出錯誤視窗 ( alert() )。 3. 若驗證成功,則將某些資料以 form post 的方式交付給遠端網站,同時畫面還給遠端網站。 原則上, 我的看法是匠子 代碼: <iframe name="process" style="display: none;"></iframe> <form target="process" action="XXXXX"> .............. </form> 您的例子中, iframe 中, src 可以不寫, 不用隨便放個東西無所謂 XXXX 的內容,基本上是驗證,驗證錯誤, 跳一個訊息(alert())出來沒什麼大問題, 問題是驗證過後 我建議:驗證歸驗證, 顯示歸顯示, 兩支程式 通常您在驗證過後,該作的都已經作了(存cookies, 寫 session 什麼的) , 作完動作就直接轉址到該頁面去 很有趣的狀況:iframe 中若 src 不設定的話,IE 會因為含有安全及不安全的網頁內容而破壞 https 的上鎖狀態;但是 Firefox 1.0 卻沒此問題。 另外,可能是我的題意寫的太差,讓你誤會了。 整個機制總共 4 隻程式,一隻由遠端系統做頁面切換(1)到本地認證頁面(2)、本地認證頁面將使用者資訊送入 Server 端驗證(3)、Server端將驗證結果送回遠端系統的接收端(4)。附加要求是 (2) -- > (3) 之間不可以在視窗上看到換頁的動作。 為了達成這個附加要求,所以才會放一個看不見的 iframe 以便 form 可以將 action 的動作設定到 iframe 中,原始的想法是望當 iframe 中的 Server 端程式完成驗證後,再透過 form target=_top 的方式將驗證後的結果用 post 的方式送回原本包含 iframe 的這個視窗中。 可惜,IE 雖然正常,但 Firefox 卻切不回來... :'( 而為了讓 Firefox 用戶也能完成相關的認證程序才會到這邊詢問有無其他的可行方案。 ※註:必須在網址列上避免出現 ...?name=...&pwd=... 的字眼,所以用 top.location = ... 的方式應該是不行了... :'( 引言回覆: 代碼: 驗證部份..... 沒通過, alert(); 通過了 <script>window.parent.location='http://moztw.org';</script> 匠子,應可以達到您的要求 如前述,控制權要還給遠端系統,所以無法使用 Session 或 Cookies 方式達成。 |
發表人: | softcup [ 2004-12-21, 16:34 ] |
文章主題 : | |
代碼: <iframe name="process" src="image.gif" style="display: none;"></iframe> 將 iframe 的 display 設為 none 後,果然就無法動作了,還真是有點詭異,不過還是可以使用 visibility ,再加上 position 來解決,可以參考底下的代碼,而且不會有一空白的區塊,試試看吧 代碼: <iframe name="process" src="about:blank" style="position: absolute; left: 0px; top: 0px; visibility: hidden;"></iframe>
個人建議: 1. left 與 top 可以設為小於或等於 0,這樣比較不會出現捲動軸 2. 既然 iframe 剛開始沒有要載入什麼資料,那可以將 src 設為 "about:blank" (空白頁面),這樣應該可加快頁面載入時間 |
發表人: | Carousel [ 2004-12-21, 17:33 ] |
文章主題 : | |
我測試了一下,這麼作法試試 代碼: <div id="SSS" style="position:absolute; visibility:hidden;"> <iframe name="process" style="display: inline;" src=blah blah></iframe> </div> 把 iframe 放到圖層裡, 圖層設為隱藏, 傳到送遠端的部份 代碼: <form method="post" name="form1" action="http://hostname/login.asp" target="_parent">
......... </form> <body onload="document.form1.submit();"> |
發表人: | BobChao [ 2004-12-22, 04:08 ] |
文章主題 : | |
Ada 寫: 整個機制總共 4 隻程式,一隻由遠端系統做頁面切換(1)到本地認證頁面(2)、本地認證頁面將使用者資訊送入 Server 端驗證(3)、Server端將驗證結果送回遠端系統的接收端(4)。附加要求是 (2) -- > (3) 之間不可以在視窗上看到換頁的動作。
那個 (2) -> (3) 的部分可以考慮用 HTTPRequest 物件玩玩看.. http://jibbering.com/2002/4/httprequest.html (有空再玩吧,不好意思都沒解決你的問題只顧插嘴 ^^) |
發表人: | Ada [ 2004-12-23, 12:16 ] |
文章主題 : | |
感謝以上各位伙伴的建議,將利用時間逐一修正/測試相關作法。 感謝! ![]() |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |