2014-02-18 74 views
0

Well met!什麼是IFrames的交互式替代方案

我正在開發類似於Windows 8瓷磚界面的項目,僅用於網站。

這個想法是,當點擊一個貼圖時,它會增長以填充網站(讓頂部的菜單欄保持空閒),用戶可以正常瀏覽已加載的網站。當他點擊菜單欄上的一個按鈕時,瓷磚就會長大。

我的方法是使用IFrame。但是這些可以通過訪問站點的HTTP選項來禁用,或者通過使用一些JavaScript來測試窗口頂層。

因此,我需要一些替代IFrame的。我能夠找到的最好的東西是JQuery .load(url),它只顯示網站的內容,而不是使其正常可用。我的測試也很慢。

有什麼我可以用的,還是我必須放棄這個想法?

提前致謝!

回答

0

來自不同來源的加載資源在客戶端非常有限。你最好的選擇可能是服務器端的代理(這不是一個完美的解決方案,因爲它被騙子使用,仔細閱讀它) - 我記得這個iPad simulator有一個假的移動Safari瀏覽器,它使用php simple proxy

+0

感謝您的快速回答。起初,它看起來非常有前途,但經過一段時間後,我不得不注意到很多網站不可用(嘗試谷歌搜索)或者缺少交互部分,如登錄表單。 – gnomgrol

+0

對。儘管我們很喜歡構建瀏覽器瀏覽器,但沒有網站喜歡用戶登錄或向第三方代理提交任何敏感數據的想法。 – Ronny

+0

基本上,瀏覽器瀏覽器功能無法以這種方式實現。在這種情況下,感謝您的幫助! – gnomgrol

0

使用客戶端技術... jQuery的.load()將使用AJAX獲取資源,並通過同域同源策略(安全沙箱)所固有的XMLHttpRequest對象的限制。

iFrame會加載資源,但正如您指出的那樣它有缺點。

使用服務器端技術... 如果你只有在需要要打開的瓷磚的幾個網站,你可以使用服務器端技術(PHP,JSP,ASP)預裝他們,把他們藏在容器對象(如div元素)中,然後以編程方式顯示它們,當用戶通過懸停或單擊事件激活圖塊時。

以java爲例,您可以使用java.net庫打開字符串緩衝區,讀取並保存網站的內容,然後將該變量添加到servlet響應中。使用JSTL你可以從響應對象輸出變量。