AJAX:如何处理书签和后退按钮(1)

日期:2020-05-07编辑作者:Web前端

或者如果你不喜欢onclick:

window.onload = initialize;

function initialize() {
  // initialize the DHTML History
  // framework
  dhtmlHistory.initialize();

  // subscribe to DHTML history change
  // events
  dhtmlHistory.addListener(historyChange);

  // if this is the first time we have
  // loaded the page...
  if (dhtmlHistory.isFirstLoad()) {
    debug("Adding values to browser "
          + "history", false);
    // start adding history
    dhtmlHistory.add("helloworld", 
                     "Hello World Data");
    dhtmlHistory.add("foobar", 33);
    dhtmlHistory.add("boobah", true);

    var complexObject = new Object();
    complexObject.value1 = 
                  "This is the first value";
    complexObject.value2 = 
                  "This is the second data";
    complexObject.value3 = new Array();
    complexObject.value3[0] = "array 1";
    complexObject.value3[1] = "array 2";

    dhtmlHistory.add("complexObject", 
                     complexObject);

时间: 2019-09-08阅读: 150标签: 库快速开始

www.129028.com金沙,本文将展示一个开源JavaScript库,该脚本库给AJAX应用程序带来了书签和后退按钮支持。在学习完这个教程后,开发人员将能够获得对一个AJAX问题的解决方案甚至连Google Maps和Gmail现在都不提供该解决方案):一个强大的、可用的书签和后退前进功能,其操作行为如同其他的Web应用程序一样。

请注意,这togetherjs-min.js不是TogetherJS的整个代码,它只是一个相当小的文件,可以根据需要加载其余的TogetherJS。您可以将script任意位置放在页面上

开发人员使用add()方法添加历史记录事件。添加历史记录事件涉及为历史记录变化指定一个新地址,例如edit:SomePage,以及提供一个和该事件一起保存的可选historyData值。

  • 通常在/body被认为是放置脚本的最佳位置之前。
/** Our callback to receive history change
     events. */
function historyChange(newLocation, 
                       historyData) {
  debug("A history change has occurred: "
        + "newLocation="+newLocation
        + ", historyData="+historyData, 
        true);
}

技术概述

解决方案

TogetherJSConfig_enableShortcut:如果你想在一个应用程序上尝试TogetherJS,但是不想提出一个“Start TogetherJS”按钮,你可以使用TogetherJSConfig_enableShortcut = true然后一个事件处理程序将会在你点击alt-T时启动TogetherJSalt-T(连续两次!)。当有人打开邀请链接时,TogetherJS仍会自动启动。

DHTML历史记录应用程序也必须在与AJAX Web页面相同的目录下包含blank.html文件;这个文件与RSH框架打包在一起,且对于Internet Explorer来说是必需的。顺便提一下,RSH使用一个y隐藏Iframe来跟踪和添加Internet Explorer的历史记录变化;这个Iframe需要我们指定一个实际的文件位置才能正常工作,这就是blank.html。

通过在页面上包含两件事来快速入门。首先是JavaScript:

问题

togetherjs-min.js即使您没有包含“Start TogetherJS”按钮,也应该将脚本放在站点的每个页面上。只要脚本在页面上,那么两个人就可以在该页面上进行协作。如果您在页面上忘记了它,那么如果有人在TogetherJS会话中访问该页面,他们将基本上“离线”,直到他们回到另一个页面,包括togetherjs-min.js

本文所展示的这个框架的主要发明分为两部分。首先是一个隐藏的HTML表单,用于缓存大量短期会话的客户端信息;这种缓存功能为页面导航提供了强大的支持。其次是超链接锚点和隐藏Iframe的组合,它们被嵌入后退和前进按钮,用来截获和记录浏览器的历史记录事件。以上两种技术都被包装在一个简单的JavaScript库中来简化开发。

TogetherJS依赖于应用程序来同步其状态。如果您的Web应用程序具有大量动态客户端内容,则这两个用户将不会自动看到相同的内容。TogetherJS与屏幕共享不同:每个人都在自己的普通浏览器环境中运行您的Web应用程序。我们提供的工具可以帮助您同步您的州。

但是AJAX应用程序却不一样,它们是运行在单个Web页面中的复杂程序。浏览器并不是为这类程序而构建的——这类Web应用程序已经过时,它们在每次鼠标点击的时候都需要重新刷新整个页面。

配置TogetherJS

RSH框架由两个JavaScript类组成:DhtmlHistory和HistoryStorage。

button Start TogetherJS/buttonscript$(function () { $("#start-togetherjs").click(TogetherJS);});/script
http://codinginparadise.org/my_ajax_app#helloworld 
scriptvar TogetherJSConfig_something = "foo";// more config.../scriptscript src="-min.js"/script

第二个类:HistoryStorage,允许开发人员保存任意数量的已存历史记录数据。在普通Web页面中,当用户导航到一个新的web站点时,浏览器卸载并清除web页面上的所有应用程序和JavaScript状态;如果用户用后退按钮返回,所有的数据都丢失了。HistoryStorage类通过一个包含简单散列表方法例如put()、get()、hasKey())的API来解决这类问题。上面的方法允许开发人员在用户离开Web页面之后保存任意数量的数据;当用户按后退按钮重新返回时,历史记录数据可以通过HistoryStorage类来访问。在内部,我们通过使用隐藏的表单字段来实现此功能,这是因为浏览器会自动保存表单字段中的值,甚至在用户离开Web页面的时候也如此。

如果您想深入研究代码,可能需要跳到配置TogetherJS。

historyChange()方法很简单,该函数在用户导航到一个新位置后接收newLocation以及任何与该事件关联的可选historyData。

script // TogetherJS configuration would go here, but we'll talk about that // later/scriptscript src="-min.js"/script

TogetherJSConfig_cloneClicks:这应该设置为jQuery选择器或设置为true。每当有人点击与此选择器匹配的元素时,该点击将在其他人的浏览器上重复(作为实际点击)。这对于单击通常不执行任何操作但显示或隐藏或切换页面视图的情况非常有用。请注意,切换的任何控件肯定不会在这里工作!如果您有标签按钮,可以显示您可能使用的不同内容TogetherJSConfig_cloneClicks = ".tab"。设置TogetherJSConfig_cloneClicks = true将全局克隆点击次数。

在这种类似于Gmail的AJAX软件中,浏览器的地址栏在用户选择功能和改变程序状态的时候保持不变,这使得无法在特定的应用程序视图中使用书签。此外,如果用户按下“后退”按钮来“撤销”上次的操作,他们会惊奇地发现,浏览器会完全离开该应用程序的Web页面。

下一步是在您的网站上放置一个按钮,让用户启动TogetherJS:

window.onload = initialize;

function initialize() {
  // initialize the DHTML History
  // framework
  dhtmlHistory.initialize();

  // subscribe to DHTML history change
  // events
  dhtmlHistory.addListener(historyChange);

配置

DhtmlHistory类为AJAX应用程序提供历史记录抽象。AJAX页面使用add()方法添加历史记录事件到浏览器,指定新的地址和相关的历史记录数据。DhtmlHistory类使用一个锚散列如#new-location)更新浏览器当前的URL,同时把历史记录数据和该新URL关联。AJAX应用程序将自己注册为历史记录的监听器,当用户使用后退和前进按钮进行浏览时,历史记录事件被触发,为浏览器提供新的位置以及与add()调用一起保存的任何历史记录数据。

TogetherJSConfig_siteName:这是您网站的名称。它默认为页面标题,但通常更简洁的标题是合适的。这在一些帮助文本中使用。

书签和后退按钮在传统的多页面Web应用程序中运行得非常好。当用户浏览web站点的时候,其浏览器的地址栏记录随新的URL而更新,这些记录可以被粘贴到电子邮件或者书签中供以后使用。后退和前进按钮也可以正常操作,使用户可以在访问过的页面中向前或向后翻动。

button onclick="TogetherJS(this); return false;"Start TogetherJS/button

RSH框架创建了一个叫做dhtmlHistory的全局对象,这是操纵浏览器历史记录的入口点。使用dhtmlHistory的第一步是在Web页面加载完成后初始化dhtmlHistory对象:

TogetherJSConfig_hubBase:这就是枢纽所在的地方。集线器是一个简单的服务器,可以在客户端之间来回传递消息。它是TogetherJS唯一真正的服务器组件(除了静态托管的脚本)。这也很无聊。如果您想使用除我们之外的集线器,您可以在此处覆盖它。主要原因是隐私;虽然我们不看任何流量,但通过自己托管中心,您可以更加确信它是私密的。您会发现具有有效证书的集线器非常有用,因为WebSockets严格禁止混合使用http / 。

http://www.bkjia.com/Javascript/591865.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javascript/591865.htmlTechArticle本文将展示一个开源JavaScript库,该脚本库给AJAX应用程序带来了书签和后退按钮支持。在学习完这个教程后,开发人员将能够获得对一个A...

你可以把它放在任何地方;就在之前/body。

让我们先从一个简单的例子开始。

本文由www.129028.com金沙发布于Web前端,转载请注明出处:AJAX:如何处理书签和后退按钮(1)

关键词:

nginx负载均衡如何实现www.129028.com金沙?

什么是nginx? Nginx是一个免费的,开源的,高性能的服务器和反向代理服务器软件,同时它也可以为IMAP和POP3服务器代...

详细>>

最少编码原则

这的确是大多数程序员,甚至是那些高级程序员都很容易混淆的一个重点。作为一名程序员,编写代码无疑是你职业...

详细>>

CSS中cursor 鼠标指针光标样式

值 前面url()是自定义鼠标的样式,图像的地址,后面的参数是 css 标准的 cursor样式,(IE下面可以不需要) 出现版本...

详细>>

textContent 与 【www.129028.com金沙】innerText、innerHTML 的区别

时间: 2019-09-09阅读: 201标签: 区别 先看看下面这个demo,不言自明: 目录 1. 语法2. 描述3. 与innerText的区别4. 与innerHTM...

详细>>