iframe 產生 IE 無法正確返回上頁的問題

iframe是個很討厭的東西,但是不知道為什麼,線上html編輯器就是得用到它,這次在處理rte線上編輯器的時候,出現了惱人的問題。

怎麼說iframe討厭呢?因為它其實算是另外一個網頁,只是嵌在頁面裡面假裝不是而已,但是騙得過人,卻騙不了電腦,尤其是那種自以為是的IE瀏覽器,就是偏偏會自以為是的把iframe的連結頁面讀進歷史紀錄當中,因此在使用IE回到上頁的功能時,就會出現必須要按好幾次才能回去的狀況,這個問題,在聰明的FireFox當中基本上是不存在的。

如何解決?

就我所知,解決的方法有兩種,第一種是 when multiple iframes, problem with IE progress bar display 所提供的,針對一個頁面裡面出現兩個(或以上)的iframe,但是並不是每一種情況都能夠適用,我自己在使用的過程當中就出現有時可以有時不行的狀況。

  1. 建立第三個iframe,並且命名為 garbageframe
  2. 在包含有兩個iframe的網頁當中,加入<body onload="javascript:fixprogressbar()">
  3. fixprogressbar() 的內容如下:

    function fixprogressbar()
    {
    top.garbageframe.document.write("");
    top.garbageframe.close();
    return
    }

但是正如我所說的,這個方法不一定每次都會奏效,起碼我個人就不是每次,因此我還發現了另外一個方法可以偷吃步的解決IE的問題,可是它要能夠使用,必須要有對應的條件,那就是iframe的預設src必須要是不‧需‧要存在的頁面。

如果想要解決IE回上頁的問題,而你發現那個被IE所load進來的預設頁面基本上是不需要的話,那就請將src設為空值,這樣一來,IE就不會讀取到該頁面,因此回上頁也不再會出現問題了。

不過基本上,我覺得這兩個方法都沒有能夠根本的解決IE對於iframe的問題,而就我個人所知,iframe也一直就存在著這樣的問題。我們很難去控制瀏覽器的控制項,所以目前似乎也找不到一個完美的解決方案,也許,最好的解決方案就是盡量不要去使用iframe的技巧,改用div來取代吧!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s