2011-09-26 44 views
2

我正在使用air app(html/ajax/javascript)。我需要製作一個導航功能,如使用iframe的頁面中的瀏覽器後退和前進按鈕,所有頁面都位於同一個域中。從AIR調用時Adobe AIR history.back()不起作用javascript

我有以下情形:

的Adobe AIR(2.7.1版本)加載(air.HTMLLoader)從mydomain.com

http://mydomain.com/index.php文件有下列設計應用程序的index.php

<html> 
    <body> 
     <input type="button" value="< BACK" onclick="iframeID.history.back();"> 
     <input type="button" value="FORWARD >" onclick="iframeID.history.forward();"> 
     <ul> 
      <li><a href="http://mydomain.com/page1.php" target="iframeNAME">page 1</a></li> 
      <li><a href="http://mydomain.com/page2.php" target="iframeNAME">page 2</a></li> 
     </ul> 
     <iframe src="page_default.php" id="iframeID" name="iframeNAME"></iframe> 
    </body> 
</html> 

所以,這個代碼在火狐,Chrome,Safari瀏覽器,而不是在Adobe AIR應用程序

我找不到關於這個問題的任何文檔,真的不知道問題出在哪裏,因爲我知道adobe air使用webkit瀏覽Chrome瀏覽器和Safari瀏覽器,但只有在空中應用程序中,此代碼不起作用。

我希望有人能幫助我。

謝謝!

回答

0

我覺得你有幾個概念混在一起。所以我會盡力幫忙。

首先,是語句:「所有頁面都在同一個域」

有一個在Adobe AIR應用程序沒有域。您正在瀏覽http://localhost/。您正在從文件系統加載文件,並將其呈現爲HTML格式。 AIR中沒有URL(除非你正在訪問遠程系統),據我所知,history.back()不起作用。

其次,我很關心這幾行:

<li><a href="/page1.php" target="iframeNAME">page 1</a></li> 
<li><a href="/page2.php" target="iframeNAME">page 2</a></li> 

這些都不會呈現。 AIR沒有內置PHP支持。正如我所說的,AIR正在瀏覽http://localhost,因此您的本地PHP安裝(如果有的話)在將它們傳遞到AIR之前不會解析和處理這些文件。

構建桌面應用程序與構建Web應用程序非常不同。而依靠只有對HTML和JS提出了一些挑戰。您失去了諸如PHP或ColdFusion之類的服務器端解決方案的諸多好處。沒有會話存儲,沒有cookie(除了訪問遠程服務時),沒有URL參數等。

雖然您從AIR中獲得了許多額外的好處。您可以訪問本地文件系統,獲得加密本地存儲,不受瀏覽器的同源策略限制,可以使用本地數據庫(甚至是加密的數據庫)等等。

如果您確實需要從AIR中的iframe中瀏覽和呈現PHP文件,並且您需要有後退和前進按鈕,那麼您需要遠程託管PHP(或讓所有用戶都安裝它在本地),你需要讓iframe遠程調用頁面。然後我懷疑history.back()會起作用。

您可以創建自己的後退/前進功能,只需使用AIR中的某個存儲多個本地存儲選項(ELS,StorageObject,SQLite,文件系統)來查看正在瀏覽的頁面的歷史記錄,然後實現使用後退和前進按鈕那些商店重新加載內容。但我認爲更好的選擇是在應用程序中簡單地進行質量導航。

祝你好運。

+0

即時加載遠程PHP網站在Adobe空氣應用程序。該站點具有主菜單和iframe,其中該菜單從同一域(遠程)加載頁面。 – innowww

0

在AIR應用程序中,「沙箱」是基於加載內容的位置。您的主應用程序位於「應用程序沙箱」中,遠程加載的內容位於「非應用程序沙箱」中。每個沙箱都受限於它可以做什麼。

每個沙箱中的內容無法與沒有橋接的另一個沙箱中的內容通話。由於您正在使用遠程內容加載iframe,因此嘗試訪問它的應用程序沙箱HTML文件可能受到限制。

我認爲你需要看看所謂的沙箱橋。特別是父母之間的沙箱橋。

我做過一次演示。幻燈片可在我的博客上找到。 。我會給你一個直接的鏈接,但我在我的手機上。只需搜索AIR安全或CFUnited 2010.

1

我的應用程序基本上是一個在Dreamweaver中的HTML網站,它具有Flash引導和HTML頁面之間的鏈接導航,然後轉換爲空中應用程序。

所有的HTML文件都在同一個目錄下。因此,page2.html與page3.html位於同一個根站點文件夾中。我的一些頁面需要導航回到上一頁。但是,因爲你可以通過不同的途徑到達那個頁面,所以我真的需要後面的功能。所以,通過很多非常複雜的建議後掙扎,我放棄了這個非常簡單的例子,從W3Schools的在:

<html> 
<head> 
<script type="text/javascript"> 
function goBack() 
  { 
  window.history.back() 
  } 
</script> 
</head> 
<body> 

<input type="button" value="Back" onclick="goBack()" /> 

</body> 
</html> 

和它的作品。對於我的應用程序,它適用於所有瀏覽器,以及適用於Mac和Windows的桌面AIR應用程序。我只是在空中工作,但我認爲這可能會幫助您解決問題。