2008-10-28 100 views
2

我正在編寫一個Web應用程序,它將在觸摸屏上以Kiosk模式運行。我目前只針對它在Firefox 3上運行。我有一些用例需要訪問外部網站。我希望通過嵌入式瀏覽器來實現這一點,我正在的幫助下解決這個問題。我需要嵌入式主頁的後退/前進按鈕。使用iframe的嵌入式瀏覽器

我已經成功與

var w = document.getElementById('embeddedBrowser').contentWindow; 
w.history.back(); 

嵌入式窗口的history訪問iframe的歷史對象相同的父窗口。因此,對於新加載的,此呼叫將返回到系統的上一頁。

有什麼辦法可以避免這種或更正確的解決方法嗎?

+0

你是否將其嵌入到另一個應用程序中? – 2008-10-28 19:41:47

回答

4

因爲在每個選項卡中只共享一個歷史對象,所以這看起來不可能。正確的方法是在回撥前測試window.history.currentwindow.history.previous。不幸的是,window.history.current是有特權的,因此無法用於未簽名的頁面。

這裏是一個混亂的解決辦法的草圖:

<iframe src="somepage.html" name="myframe"></iframe> 
<p><a href="#" id="backBtn">Back</a></p> 

<script type="text/javascript"> 

    document.getElementById('backBtn').onclick = function() { 
    if (window.frames['myframe'].location.hash !== '#stopper') { 
     window.history.back(); 
    } 
    // ... else hide the button? 
    return false; // pop event bubble 
    }; 
    window.frames['myframe'].onload = function() { 
    this.location.hash = 'stopper'; 
    }; 

</script> 

當然,這是假設沒有(#hash)瀏覽過的推移在父窗口,等等,但它似乎對工作限制向後移動的問題。

1

你可能想看看Adobe AIR。它允許您使用所有相同的工具/語言(ajax,html等)編寫應用程序,但由於它作爲桌面應用程序運行,而不是在Web瀏覽器中運行,因此您可以更好地控制事物,例如嵌入瀏覽器框架和確切地知道他們在做什麼,將要訪問的URL,控制它的歷史記錄等等。Look here有關入門的幾點提示。