back.html 3.92 KB
<html>
<head>
	<script language="JavaScript" type="text/javascript">
		// Dojo configuration
		djConfig = {
			isDebug: true,
			dojoIframeHistoryUrl: "../../resources/iframe_history.html" //for xdomain
		};
	</script>
	<script type="text/javascript" 
					src="../dojo.js" 
					data-dojo-config="isDebug:true, dojoIframeHistoryUrl: '../resources/iframe_history.html'"></script>
	<!--script type="text/javascript" src="../back.js"></script-->
	<script type="text/javascript">
		require(["dojo/_base/lang", "dojo/_base/kernel", "dojo/back", "dojo/dom", "dojo/domReady!"], function(lang, kernel, back, dom){
			ApplicationState = function(stateData, outputDivId, backForwardOutputDivId, bookmarkValue){
				this.stateData = stateData;
				this.outputDivId = outputDivId;
				this.backForwardOutputDivId = backForwardOutputDivId;
				this.changeUrl = bookmarkValue || false;
			};

			lang.extend(ApplicationState, {
				back: function(){
					this.showBackForwardMessage("BACK for State Data: " + this.stateData);
					this.showStateData();
				},
				forward: function(){
					this.showBackForwardMessage("FORWARD for State Data: " + this.stateData);
					this.showStateData();
				},
				showStateData: function(){
					dom.byId(this.outputDivId).innerHTML += this.stateData + '<br />';
				},
				showBackForwardMessage: function(message){
					dom.byId(this.backForwardOutputDivId).innerHTML += message + '<br />';
				}
			});

			var data = {
				link0: "This is the initial state (page first loaded)",
				"link with spaces": "This is data for a state with spaces",
				"link%20with%20encoded": "This is data for a state with encoded bits",
				"link+with+pluses": "This is data for a state with pluses",
				link1: "This is data for link 1",
				link2: "This is data for link 2",
				link3: "This is data for link 3",
				link4: "This is data for link 4",
				link5: "This is data for link 5",
				link6: "This is data for link 6",
				link7: "This is data for link 7"
			};

			kernel.global.goNav = function goNav(id){
				var appState = new ApplicationState(data[id], "output", "dataOutput", id);
				appState.showStateData();
				back.addToHistory(appState);
			};

			var appState = new ApplicationState(data["link0"], "output", "dataOutput");
			appState.showStateData();
			back.setInitialState(appState);
		});
	</script>
</head>
<body>
	<script type="text/javascript">
		require(["dojo/back"], function(back){back.init();});
	</script>
	<div style="padding-bottom: 20px; width: 100%; border-bottom: 1px solid gray">
	<h3>dojo.back test</h3>
	
	
	<p>This page tests the dojo.back back/forward code.</p>
	
	<p>The buttons that start with "Link" on them don't use any dojo.xhr* calls,
	just JS data already in the page.</p>
	
	<ul>
		<li>Don't test this page using local disk for MSIE. MSIE will not
		create a history list for iframe_history.html if served from a file:
		URL. Serve the test pages from a web server to test in that browser.</li>
		<li>Safari 2.0.3+ (and probably 1.3.2+): Only the back button works OK
		(not the forward button).</li>
		<li>Opera 8.5.3: Does not work.</li>
		<li>Konqueror: Unknown. The latest may have Safari's behavior.</li>
	</ul>
	</div>
	<div style="float:left; padding: 20px">
		<button onclick="goNav('link1')">Link 1</button><br />
		<button onclick="goNav('link with spaces')">Link with Spaces</button><br />
		<button onclick="goNav('link%20with%20encoded')">Link with Encoded</button><br />
		<button onclick="goNav('link+with+pluses')">Link with Pluses</button><br />
		<button onclick="goNav('link3')">Link 3</button><br />
		<button onclick="goNav('link4')">Link 4</button><br />
		<button onclick="goNav('link5')">Link 5</button><br />
		<button onclick="goNav('link6')">Link 6</button><br />
		<button onclick="goNav('link7')">Link 7</button><br />
	</div>
	<div style="float: left; padding: 20px">
		<b>Data Output:</b><br />
		<div id="output"></div>
		<hr />
		<i>Back/Forward Info:</i><br />
		<div id="dataOutput"></div>
	</div>
</body>
</html>