从html javascript调用时,Adobe AIR history.back()不起作用
我正在开发air应用程序(html/ajax/javascript)。我需要做一个导航功能,比如在一个带有iframe的页面中的浏览器后退和前进按钮,所有页面都在同一个域中 我有以下情况: AdobeAIR(2.7.1版)应用程序,从mydomain.com加载(AIR.htmloader)index.php 文件具有以下设计:从html javascript调用时,Adobe AIR history.back()不起作用,javascript,html,air,Javascript,Html,Air,我正在开发air应用程序(html/ajax/javascript)。我需要做一个导航功能,比如在一个带有iframe的页面中的浏览器后退和前进按钮,所有页面都在同一个域中 我有以下情况: AdobeAIR(2.7.1版)应用程序,从mydomain.com加载(AIR.htmloader)index.php 文件具有以下设计: <html> <body> <input type="button" value="< BACK" oncl
<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>
所以,这段代码可以在FireFox、Chrome、Safari中使用,但不能在AdobeAIR应用程序中使用
我找不到关于这个问题的任何文档,真的不明白问题出在哪里,因为我知道AdobeAIR使用webkit浏览网页,如chrome和safari,但只有在air应用程序中,此代码不起作用
我希望有人能帮助我
谢谢 我觉得你混淆了一些概念。所以我会尽力帮忙 首先是这样一句话:“所有页面都在同一个域上” Adobe AIR应用程序中没有域。你不是在浏览。您正在从文件系统加载一个文件,并将其呈现为HTML。空中没有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正在浏览,所以您的本地PHP安装(如果您有)不会在将这些文件交付给AIR之前解析和处理它们
构建桌面应用程序与构建web应用程序非常不同。仅依赖HTML和JS会带来一些挑战。您将失去像PHP或ColdFusion这样的服务器端解决方案的许多好处。没有会话存储,没有cookie(访问远程服务时除外),没有URL参数,等等
不过,通过AIR,您确实获得了很多额外的好处。您可以访问本地文件系统、获得加密的本地存储、不受浏览器的同源策略限制、可以使用本地数据库(甚至是加密数据库)等等
如果您确实需要在空中的iframe中浏览和呈现PHP文件,并且需要有一个后退和前进按钮,那么您需要远程地将PHP托管在某个地方(或者让所有用户在本地安装),并且需要让iframe远程调用页面。然后我怀疑history.back()会起作用
您可以创建自己的后退/前进功能,只需使用AIRs的许多本地存储选项(ELS、StorageObject、SQLite、文件系统)之一存储正在查看的页面的历史记录,然后实现后退和前进按钮,使用这些存储重新加载内容。但我认为更好的选择是在应用程序中简单地提供高质量的导航
祝你好运 空中应用程序是基于内容加载位置的“沙盒”。您的主应用程序位于“应用程序沙盒”中,远程加载的内容位于“非应用程序沙盒”中。每个沙箱的功能都受到限制
每个沙盒中的内容不能与另一个没有桥接器的沙盒中的内容对话。由于您正在加载带有远程内容的iframe,因此您的应用程序沙盒中试图访问它的HTML文件可能受到限制
我认为你需要研究一下所谓的沙箱桥。特别是父到子沙盒桥
我做过一次关于这个的演讲。这些幻灯片可以在我的博客上找到。我会给你一个直接的链接,但我在打电话。只需搜索航空安全或CFU 2010 我的应用程序基本上是dreamweaver中的一个HTML站点,带有flash简介和HTML页面之间的链接导航,然后转换为air应用程序 所有HTML文件都在同一目录中。因此,page2.html与page3.html位于同一根站点文件夹中。我的某些页面需要导航回上一页。但是,因为您可以通过各种路径到达该页面,所以我确实需要back功能。因此,在经历了许多非常复杂的建议之后,我在年从w3schools中删除了这个非常基本的示例:
<html>
<head>
<script type="text/javascript">
function goBack()
{
window.history.back()
}
</script>
</head>
<body>
<input type="button" value="Back" onclick="goBack()" />
</body>
</html>
函数goBack()
{
window.history.back()
}
它是有效的。对于我的应用程序,它可以在所有浏览器中运行,并且可以作为Mac和windows的桌面AIR应用程序。我只是想通过我的方式进入air,但我想这可能会帮助您解决问题。我正在adobe air应用程序中加载远程php站点。该站点有主菜单和iframe,该菜单在其中加载来自同一域(远程)的页面。