JavaScript DHTML/SmartClient/History

Материал из Web эксперт
Перейти к: навигация, поиск

Back button history management

 
<!--
Isomorphic SmartClient
Copyright(c) 1998 and beyond Isomorphic Software, Inc.
"SmartClient" is a trademark of Isomorphic Software, Inc.
All rights reserved.
Open Source License
SmartClient source code, located under the source/ directory, and the resulting assembled modules 
in isomorphic/system/modules/, as well as JavaScript and CSS files under the isomorphic/skins directory are 
licensed under the terms of the GNU Lesser General Public License, version 3. 
The text of the LGPLv3 license is available online at http://www.gnu.org/licenses/lgpl-3.0.html
If your project precludes the use of this license, or if you"d like to support SmartClient LGPL, 
we encourage you to buy a commercial license.
Icon Experience Collection
Selected 16x16 icons within the isomorphic/skins directory are part of the Icon Experience collection 
(http://www.iconexperience.ru) and may be freely used with any SmartClient components without charge, 
but may not be used as part of screen designs separate from SmartClient components without a purchase 
of a license from Icon Experience. We are working to replace these icons as soon as possible.
All other media found under the isomorphic/skins directory may be used under the LGPLv3.
Commercial Licenses
A number of commercial licenses are available for purchase. Please see http://smartclient.ru/license.
Warranty Disclaimer
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General 
Public License for more details.
Copyright 2001 and beyond Isomorphic Software, Inc. Last revised July 20, 2008. 

-->
<!-- The following code is revised from SmartClient demo code(SmartClient_70rc2_LGPL.zip).-->

<HTML><HEAD>
  <SCRIPT>var isomorphicDir="isomorphic/";</SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_History.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_Core.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_Foundation.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_Containers.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_Grids.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_Forms.js></SCRIPT>
    <SCRIPT SRC=isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>
  <SCRIPT SRC=isomorphic/skins/SmartClient/load_skin.js></SCRIPT>
</HEAD><BODY>
<SCRIPT>
DynamicForm.create({
    ID:"pane1",
    autoDraw:false,
    titleOrientation:"top",
    itemChange : function () {
        Page.setUnloadMessage("Exiting the page now will lose changes");
    },
    fields:[
        {name:"firstName", title:"First Name"},
        {name:"lastName", title:"Last Name"}
    ]
});
DynamicForm.create({
    ID:"pane2",
    autoDraw:false,
    titleOrientation:"top",
    itemChange : function () {
        Page.setUnloadMessage("Exiting the page now will lose changes");
    },
    fields:[
        {name:"officeNumber", title:"Office Number"},
        {name:"mobileNumber", title:"Mobile Number"}
    ]
});
DynamicForm.create({
    ID:"pane3",
    autoDraw:false,
    titleOrientation:"top",
    itemChange : function () {
        Page.setUnloadMessage("Exiting the page now will lose changes");
    },
    fields:[
        {name:"address", title:"Street Address"},
        {name:"city", title:"City"},
        {name:"state", title:"State"},
        {name:"zip", title:"Zip"}
    ]
});

// whenever history is navigated, call this callback
isc.History.registerCallback("historyCallback(id)");
// on page load, restore tabset state
isc.Page.setEvent("load", "restoreTabSetState()");
function restoreTabSetState() {
    isc.Log.logWarn("restoring state");
    // if we have history state, our callback will fire.  Otherwise, we need to inspect the URL
    // to see if there"s history ID in there - this is what happens when the user bookmarks one
    // of the history URLs, closes the browser, opens a new one and then navigates to the bookmark.
    if (!isc.History.haveHistoryState()) {
        tabSet.jumpToTab(isc.History.getCurrentHistoryId() || 0);
    }
}
function historyCallback(id) {
    // the id is the tabNum and null is initial state - which is the first tab.
    tabSet.jumpToTab(id == null ? 0 : id);
}
TabSet.create({
  ID:"tabSet",
  top:50,
  left:50,
  width:600,
  height:400,
    rememberHistory : true,
    jumpToTab : function (tabNum) {
        this.noHistory = true;
        // convert string to number
        this.selectTab(new Number(tabNum));
        this.noHistory = false;
    },
    tabSelected : function (tabNum) {
        if (!this.noHistory && isc.Page.isLoaded()) isc.History.addHistoryEntry(tabNum);
    },
  tabs:[{title:"red", pane:pane1, width:70},
      {title:"green", pane:pane2, width:70},
      {title:"blue", pane:pane3, width:70}]
});
</SCRIPT>
</BODY>
</HTML>