Microsoft ASP.NET Futures (July 2007)中History在客户端的使用(即不必安装ASP.NET Futures)

原创 2007年09月19日 08:36:00
 Microsoft ASP.NET Futures (July 2007)中有一个新的控件 “History”可以在Ajax中使用浏览器上的前进、后退按钮,但我们的主机上有时不必因为这一个功能就安一个Microsoft ASP.NET Futures,它版本更新很快,而且有时候,服务器提供者也未必愿意进行安装,而开发者又想有让用户有更好体验,那怎么办呢,我们先从基本的使用入手 ,我们再一步步将其提取为客户端可以使用的代码

它的用法在官方网站上已经给出
官方示例(服务器端)
http://quickstarts.asp.net/Futures/ajax/samples/history1.aspx
官居方源代码
http://quickstarts.asp.net/Futures/util/srcview.aspx?path=~/ajax/samples/history1.src

官居方示例(客户端使用,但仍未脱离Microsoft ASP.NET Futures)
http://quickstarts.asp.net/Futures/ajax/samples/history2.aspx
源代码
http://quickstarts.asp.net/Futures/util/srcview.aspx?path=~/ajax/samples/history2.src
其实上面代码引用的是PreviewScript.js文件,这个可以在X/Program Files/Microsoft ASP.NET/ASP.NET Futures July 2007/v1.2.61025/ScriptLibrary/Microsoft.Web.Preview/1.2.61025.0中找到

在客户端使用它是最理想的情况,可且的确,用它自给的PreviewScript.js(145K)文件也是有点过大了
所以经过精简,我得到了一个小的精简版本,未压缩的情况下只有16K,压缩后估计在3K上下
http://dl2.csdn.net/down4/20070919/19082247681.js

但发现此版本在FF下工作正常,而IE下却有问题,经过反复研究,发现IE下必须添加一个Iframe来保存历史记录

于是有了以下Js段
function isIE(){ //ie? 
    if (window.navigator.userAgent.indexOf("MSIE")>=1
        
return true
    
else 
        
return false
}
这是来判断是否是IE
function InitHistory(){
    
if(isIE){//Ie的情况下,要通过iframe来完成
    var i = document.createElement("<iframe id="__historyFrame" style='display:none;' src='/Template/History.htm' scrolling='no' frameborder='0' />");
    
var d=$get("extendDiv6");
    d.innerHTML
=i;
    }
    Sys.Application.add_init(
function() {
          
var h = Sys.Application.get_history();
          h.setServerId(
"History1""History1");
    })
}

动态添加一个iframe(注意ID一定是__historyFrame

下面是页面完整代码 basic.js即为上面两段代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
    
<script type="text/javascript">
            
function pageLoad() {
            $addHandler($get(
"clientButton1"), "click", clientClick);
             $addHandler($get(
"clientButton2"), "click", clientClick);
        }
        
function pageNavigate(sender, args) {
            
var val = args.get_state().pageClientState || 0;
            $get(
"div2").innerHTML = val;
        }
        
        
function clientClick(e) {
            
var val = parseInt(e.target.value);
            $get(
"div2").innerHTML = val;
            Sys.Application.get_history().addHistoryPoint({pageClientState: val});
       }
    
</script>
</head>
<body>
    
<script type="text/javascript" src="JavaScript/MicrosoftAjax.js"></script>
<script type="text/javascript" src="JavaScript/Basic.js"></script>
<script type="text/javascript" src="JavaScript/Preview/history.js"></script>
<div id="div2"></div>
<form id="form1">
<href="#123" id="permalink">Permalink</a>
        
<input id="clientButton1" type="button" value="1" />
        
<input id="clientButton2" type="button" value="2" />
    
</form>
    
<script type="text/javascript">
InitHistory();
</script>
</body>
</html>
这样就可以实现在Ajax里使用前进后退按钮而不必安装Microsoft ASP.NET Futures也能用History了

注:History 还不支持Opera希望在下一版本中可以支持

探索 ASP.NET Futures

如果你在使用ASP.NET点,同时又希望它Search Engine Friendly一些,很可能你就希望它有一个Sitemaps。在这里我们说的不是ASP.NET的SiteMap,而是Sitemap...
  • piaoyi_online
  • piaoyi_online
  • 2007年07月26日 20:50
  • 1414

Sql server 2005安装时 找不到 ASP.Net 在 Microsoft Internet 信息服务(IIS)中的版本注册信息。

使用管理员身份打开命令提示符: 1、cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWi...
  • bixing
  • bixing
  • 2016年01月08日 13:03
  • 7170

Futures/Promises Golang方式实现

Futures/Promises Golang Go语言方式实现.
  • htyu_0203_39
  • htyu_0203_39
  • 2016年05月28日 10:34
  • 596

35、concurrent.futures模块与协程

concurrent.futures  —Launching parallel tasks    concurrent.futures模块同时提供了进程池和线程池,它是将来的使用趋势,同样我们之前学习...
  • linux12a
  • linux12a
  • 2017年09月01日 15:25
  • 135

Futures

python并发库之concurrent.futures:Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标...
  • sylgdxsgx
  • sylgdxsgx
  • 2018年02月08日 17:07
  • 13

Guava - 并行编程Futures

这里转载一篇关于Guava - 并行编程Futures介绍,随后附上自己的调用: 1、介绍 Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并...
  • lb7758zx
  • lb7758zx
  • 2017年07月04日 14:37
  • 173

Office outlook 2007的备份与恢复

最近用上office outlook 2007了,为了工作和个人的需要,记录一下备份方法以便日后之用,呵呵!Outlook2007备份的方法整理如下:1.邮件内容的备份:使用“导入导出”功能或者直接找...
  • batyu1972
  • batyu1972
  • 2010年03月08日 15:06
  • 2596

Asp.net Futures安装时出错的解决方法

重装系统及所有软件 (开玩笑)。。。。说正题,1要用管理员登录2要安.net 3.0 3 要安Framework 3.5 – Beta 1http://www.microsoft.com/downlo...
  • chsword
  • chsword
  • 2007年06月19日 07:22
  • 754

tensoflow 安装出现futures requires Python '>=2.6, <3' but the running Python is 3.5.3的解决方法

futures是不能安装在python3中的,或者说安装了也没用 具体信息https://pypi.python.org/pypi/futures 但是tensoflow安装时却需要这个依赖。。。...
  • liaoxianfu
  • liaoxianfu
  • 2018年02月02日 11:29
  • 248

Parallel Futures of a Game Engine

http://publications.dice.se/attachments/BFH-Telemetry.pptDice的ppt,GPP部分,dice没有用script,逻辑部分本身就是交互非常复杂...
  • ccanan
  • ccanan
  • 2010年05月31日 21:35
  • 1231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: Microsoft ASP.NET Futures (July 2007)中History在客户端的使用(即不必安装ASP.NET Futures)
举报原因:
原因补充:

(最多只允许输入30个字)