總之,去看錯誤訊息會發現,根本的原因其實是該頁面沒有取得Seesion Id,那為什麼ie跟Chrome可以正常執行?原因是firefox在框架之前互相抓取的時候,必須要使用getElementById的指令才可以取得我們以為他應該取得的項目(真抽象XD)
舉例來說,我想浮動視窗,所以利用兩個iframe,一個叫做F1裡面擺了MapGuide的框架,另一個叫做F2擺了製作的各項功能頁面,現在F2的功能頁面中,有項目點選後要連動F1的MapGuide,那該怎麼做?

IE裡面可以直接parent.F1.ViewerFrame.mapFrame.Refresh()之類的語法就可以:
1. 從F2回到上一層
2. 在該層找到F1這個iframe
3. 找到MapGuide的frame名稱(ViewerFrame)
4. 進到MapGuide的mapFrame裡面
5. 執行Refresh()的語法
但是在firefox卻不可行?不動就是不動...
而原因也就是剛剛所提,於firefox的框架在抓取時有些許不同,所以其實他根本沒有正確的進到MapGuide框架中執行重新整理的函式。
所以,怎麼抓?
parent.document.getElementById('F1').contentWindow.ViewerFrame.mapFrame.Refresh()
其實也就是在從F2跳到上一層後,必須利用getElementById的語法去指定要取得的Id(也就是F1這個iframe)。
那改成上面的方式之後,ie跟chrome可以動嗎?當然可以!YA......
沒有留言:
張貼留言