`
牧羊人
  • 浏览: 211135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浏览器前进后退按钮切换状态

    博客分类:
  • flex
阅读更多
Flex browser manager能够让用户通过浏览器的前进后退按钮来导航应用。因为这个browser manager能够对状态的切换进行跟踪。   
以前说过,每个状态是个新的界面,而不是一个新的页面。但是用浏览器也能实现不同状态之间的切换。如何做到呢?先看看背景知识。
BrowserManager:一个 Singleton 管理器,用于充当浏览器和应用程序之间的代理。使用它可以访问浏览器地址栏中的 URL,这与访问 JavaScript 中的 document.location 属性类似。它有一个getInstance() 方法,返回的是一个IBrowserManager类的实例。
IBrowserManager:由 BrowserManager 的共享实例实现的接口。init()方法:初始化 BrowserManager。fragment属性:当前 URL 显示在浏览器地址栏中时,“#”之后的部分。
<?xml version="1.0"?>
<!-- states\StatesBrowserManager.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:mx="library://ns.adobe.com/flex/halo"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   creationComplete="initApp();">
	<fx:Script>
		<![CDATA[
			import mx.managers.BrowserManager;
			import mx.managers.IBrowserManager;
			import mx.events.BrowserChangeEvent;
			import mx.utils.URLUtil;
			// The search string value.
			[Bindable]
			public var searchString:String;
			// 一个 BrowserManager 类的实例.
			private var browserManager:IBrowserManager;
			//在应用创建完成时初始化 BrowserManager.
			public function initApp():void {
				browserManager = BrowserManager.getInstance();
				browserManager.addEventListener(BrowserChangeEvent.BROWSER_URL_CHANGE, parseURL);
				browserManager.init("", "Browser Manager for View States");
				updateURL('default');
			}
			// 当用户按前进后退按钮时触发事件,事件处理器从URL里接到状态的值,从而。用他
			//设定当前状态。 
			private var stateFromURL:String;
			private function parseURL(e:Event):void {
				var o:Object = URLUtil.stringToObject(browserManager.fragment);
				stateFromURL = o.state;
				currentState=stateFromURL;
			}
			// 状态改变时改变地址。
			private function updateURL(myCurrentState:String):void {
				var s:String = "state=" + myCurrentState;
				browserManager.setFragment(s);
			}
			// 当按下go按钮时执行该方法。
			// 它会改变状态以及调用updateURL()方法来改变URL。
			public function doSearch():void {
				currentState = "results";
				updateURL('results');
				searchString = searchInput.text;
			}
			// 点击reset按钮时执行该方法,该方法是状态改到默认值,。并且改变URL
			public function reset():void {
				currentState = '';
				searchInput.text = "";
				searchString = "";
				updateURL('default');
			}
		]]>
	</fx:Script>
	<s:states>
		<!-- The state for displaying the search results -->
		<s:State name="default"/>
		<s:State name="results"/>
	</s:states>
	<!-- In the default state, just show a panel
	with a search text input and button. -->
	<s:Panel id="panel1"
			 title="Search" title.results="Results"
			 resizeEffect="Resize"
			 width="10%" height="10%"
			 width.results="100%" height.results="100%">
		<s:layout>
			<s:VerticalLayout/>
		</s:layout>
		<s:SkinnableContainer id="searchFields" defaultButton="{b}">
			<s:layout>
				<s:HorizontalLayout/>
			</s:layout>
			<s:TextInput id="searchInput"/>
			<s:Button id="b"
					  label="Go"
					  click="doSearch();"/>
			<s:Button includeIn="results"
					  label="Reset"
					  click="reset();"/>
		</s:SkinnableContainer>
		<s:TextInput includeIn="results"
					  text="Search results for {searchString}"/>
	</s:Panel>
</s:Application>
分享到:
评论

相关推荐

    JavaScript不刷新实现浏览器的前进后退功能

    但是很多早先的AJAX应用是不支持浏览器的前进后退的,这导致了用户不管在网站里浏览到何处,一旦刷新就会立刻回到起初的位置,并且用户也无法通过浏览器的前进后退按钮来实现浏览历史的切换。 对于第一个问题,解决...

    苹果浏览器微信底部返回栏显示/隐藏的问题

    此段js代码完美解决 ; (function () { try { isIOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) if (fn.isIOS) { // window.history.pushState({}, title, #);... document.addEventListener...

    可以自动控制网页操作的浏览器MutouBrowser(Pro).rar

    木头多功能浏览器(专业版)可以生成自动刷新网页监控网页...11、支持自动打开、关闭浏览器标签页,浏览器自动前进后退功能; 12、浏览器自动执行自定义javascript或jquery代码。 13、可以完成复杂的网页自动控制流程。

    vue-transition-router:vue移动端仿APP切换完整实例

    浏览器导航栏的切换通过记录 历史记录 来比较判断前进还是后退如下例子A页面 -&gt; B页面 -&gt; C页面假如我从 A页面到 B页面 再到C页面,历史记录就会产生3条我们用一个数组表示: ['/a', '/b', '/c']然后我在通过点击...

    完全自学(安卓)

    《完全自学》是一款集所有教学视频与一身的获取软件,还提供了浏览器功能,我们可以手机摇一摇来切换全屏,左滑上网按钮网页可以后退,右滑上网按钮网页可以前进,双击上网按钮可以回到主页面。点击游戏,我们可以玩...

    JS_多组图片显示带左右按钮

    可以分别载入多组图片,显示大图带左右按钮前进后退,按住鼠标可以快速切换图片。

    嵌入iOS应用的开源web浏览器控件

    1、提供后退和前进按钮。 2、重新加载按钮(可选)。 3、当页面加载时激活指示器。 4、在Safari中利用操作按钮打开当前页(可选)。 5、在导航栏中显示网页标题(可选)。 6、在 “Open in Safari” 动作工作...

    C#浏览器编程,学习使用

    浏览器界面设计主要确定浏览器的页面布局,设定浏览器窗口上设置哪些功能菜单项、设置哪些功能按钮、设置哪些状态栏,它们各自的位置如何、属性如何、对应的变量如何等等。 (3)浏览器代码设计 浏览器代码设计...

    windowsPhone开发(三)--导航原理分析

    从Silverlight3开始,提供了内置的导航框架,可以比较轻松的在SilverlightPage之间进行切换,并且可以和浏览器的前进、后退按钮集成。在Silverlight3之前的版本,Silverlight没有特定的导航框架,项目中页面之间的...

    Vue 滚动行为的具体使用方法

    滚动行为 使用前端路由,当切换到新...第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。 const router = new VueRouter({ routes: [...], scrollBehavior (to, fro

    SharpBrowser:使用C#和CefSharp构建的功能齐全的Web浏览器

    后退,前进,停止,刷新 开发者工具 搜索栏(还突出显示所有实例) 下载管理器 自定义错误页面 自定义上下文菜单 轻松添加特定于供应商的品牌,按钮或热键 查看在线和离线网页 热键 热键 功能 Ctrl + T 新增标签 ...

    详解10分钟学会vue滚动行为

    滚动行为 什么是路由的滚动行为 ...第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用 下面我们做一个小案例来了解一下 效果 滚动行为 &lt;li&gt;&lt;r

    beagairbheag:基于浏览器的实用程序的开放源代码,用于协助认真研究BBC的Beag air BheagGàidhig教学计划

    是的,您猜对了,这是一个切换的开始/顶部按钮,可以播放所选剧集的音频。 您可以通过单击“条形音箱”,用鼠标或使用滚轮拖动“播放头”来前进或返回播放位置。 全新功能- “重播”按钮,专门为那些难以理解麻烦...

Global site tag (gtag.js) - Google Analytics