??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲精品日韩已满,亚洲一卡2卡三卡4卡有限公司,亚洲国产精品尤物YW在线观看http://www.tkk7.com/kiant/articles/324626.html黄小?/dc:creator>黄小?/author>Sun, 27 Jun 2010 14:40:00 GMThttp://www.tkk7.com/kiant/articles/324626.htmlhttp://www.tkk7.com/kiant/comments/324626.htmlhttp://www.tkk7.com/kiant/articles/324626.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/324626.htmlhttp://www.tkk7.com/kiant/services/trackbacks/324626.html

]]>
Javascript学习指南Q第2版)W记(? DOM、Ajax及其数据http://www.tkk7.com/kiant/articles/322267.html黄小?/dc:creator>黄小?/author>Sun, 30 May 2010 03:17:00 GMThttp://www.tkk7.com/kiant/articles/322267.htmlhttp://www.tkk7.com/kiant/comments/322267.htmlhttp://www.tkk7.com/kiant/articles/322267.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322267.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322267.html 1、DOM
2、节点属性和Ҏ(gu)
3、Ajax安全和工作区
4、Ajax数据QXML?JSONQJavaScript对象W号Q?/a>





1、DOM

     ?W3C关于 DOM的规范中Q将 document元素描述Z个节?node)集合Q他们之间是以有层次的树形结构连接的。你不仅可以从树上读取节点,q可以删除或创徏新的节点?br />
#document
html
  head
    title
  body
    h1
    div
      p
        #text
      p
        #text


2、节点属性和Ҏ(gu)

     对于文档树上的每个节炚w拥有 DOM(Core)?Node对象中定义的基本属性和基本Ҏ(gu)集。Node对象的属性主要包括:

nodeNameQ对象名Uͼ?head元素的名U就?HEADQ?br /> nodeValueQ如果不是一个元素,则返回对象|
nodeTypeQ用数字表示的节点类型;
parentNodeQ当前节点的父节点;
childNodesQ由其子节点l成?NodeListQ前提是存在子节点;
firstChildQ由子节点组成的 NodeList中的W一个节点;
lastChildQ由子节点组成的 NodeList中的最后一个节点;
previousSiblingQ如果当前节Ҏ(gu)位于 NodeList中的子节点,那么它表C的是该列表中的前一个节点;
nextSiblingQ如果当前节Ҏ(gu)位于 NodeList中的子节点,那么它表C的是该列表的下一个节点;
attributesQ一?NamedNodeMapQ它是以?值对形式表示的,是该元素的属性列表;
ownerDocumentQ拥有的 document对象Q当你拥有多?document对象时它比较有用Q?br /> namespaceURIQ命名空间的 URIQ如果有的话Q他是针对节点的Q?br /> PrefixQ命名空间的前缀Q如果有的话Q它是针对节点的Q?br /> localNameQ如果指定了 namespaceURI的话Q它表示的是节点的本地名?


3、Ajax安全和工作区

     ?Ajax遵@ JavaScript中相同源、相同域的规则:?Web面中只能调用相同服务器Q相同域Q的 Web服务Q也是_服务器端面与服务器发送请求的面处于相同的服务器、相同的域中?br />
     但是对于 AjaxE序而言Q向本地服务器端h一?Web服务Q然后接收本地服务器的返回信息即可。它q不兛_本地 Web服务实际上是否通过讉Kq程 Web服务实现的?


4、Ajax数据QXML?JSONQJavaScript对象W号Q?/strong>


XML格式?Ajax应答

     好处是比单的字符串或 HTML片段更多元。另外,你还可以向对?Web面元素那样Q直接通过 DOMҎ(gu)来操?Ajax调用q回?XML格式应答?br />
     保在服务器端应用程序在q回数据时设|了正确的数?MINEcd text/xmlQ然后通过 XMLHttpRequest对象?responseXML容器来获取应{信息?br />

JSON

     JSON是一U?#8220;轻量U的数据交换格式”。和一l由逗号分开的字W串Q以及处理复杂(成本高昂Q的 XML相比QJSON是一U很Ҏ(gu)服务器端数据结构{?JavaScript对象的数据格式?br />
     JSON实际上就是?JavaScript语法定义的对象,一个对象的语法包括一对大括号以及其中的成员:
     object{ } or object { string : value ...}

     对于数组而言Q他是由一l元素加上一Ҏ(gu)括号l成的:
     array[] or array[ value, value, value, ..., value ]

注:?JavaScript可以用单引号或双引号来引用字W串Q?JSON只支持双引号?br />
CZQ在 PHP脚本中用简单的 JSON
$result = '[ { "value" : "stlou", "title" : "St. Louis" }, ' .
          '  { "value" : "kc" , "title" : "Kansas City" } ]';


JSON对象

     ?http://www.json.org/js.html上可以找C?JSON JavaScriptE序库,它提供了一些基于该E序库的 JSON对象。包含了直接讉K JSON对象的静态方法:
JSON.parseQ基于指定的 JSON格式字符串创Z?JavaScript对象Q?br /> JSON.stringifyQ将一?JavaScript对象序列化成一?JSON格式的字W串?br />

JSON CZ1Q?br />
//?nbsp;JSON字符串进?#8220;计算”
var response = JSON.parse(xmlHttpObj.responseText);

var citySelection = document.getElementById("citySelection");
var name = value = null;

//处理?nbsp;JSON对象q回的数?/span>
for (var i=0; i<response.length; i++) {
    name 
= response[i].title;
    value 
= response[i].value;
    citySelection.options[i] 
= new Option(name, value);
}


JSONCZ2Q?
//从服务器获得?nbsp;JSON对象实例Q?/span>
"title" : "Appletini"
  
"ingredients" : [ { "ingredient" : "1 ounce vodka"},
                    { 
"ingredient" : "1/2 ounce Sour Apple Pucker or apple schnapps "} ],
  
"instruction" : "Mix vodka and schnapps in a glass filled with ice." }


//============================================================
//
处理 JSON数据

//创徏对象
var recipeObj = JSON.parse(xmlhttp.responseText);

var recipe = document.createElement('div');
recipe.id 
= 'recipe';
recipe.className 
= 'recipe';

//d标题
var title = recipeObj['title'];
var titleNode = document.creteElement('h3');
titleNode.appendChild(document.createTextNode(title));
recipe.appendChild(titleNode);

//d配方成分
var ingredients = recipeObj.ingredients;
for (var i=0; i<ingredients.length; i++){
    
var item = ingredients[i].ingredient;
    
}

.
body[
0].appendChild(recipe);


]]>
Javascript学习指南Q第2版)W记(? 览器对象、cookiehttp://www.tkk7.com/kiant/articles/322244.html黄小?/dc:creator>黄小?/author>Sat, 29 May 2010 13:46:00 GMThttp://www.tkk7.com/kiant/articles/322244.htmlhttp://www.tkk7.com/kiant/comments/322244.htmlhttp://www.tkk7.com/kiant/articles/322244.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322244.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322244.html 1、window对象
2、同源安全策?/a>
3、cookie



     览器对象模型(BOMQ是一l从览器上下文l承而来的对象,q也是绝大多?JavaScript应用E序中函数运行的上下文。有时它也被UC?DOM Level 0Q或者就?DOM?br />
     BOM是一l有限的公共 Web对象Q也是一个层ơ化的对象集Q每个层ơ上的对象都可以通过它们的父对象来访问,比如 window[navigator, location, frames, screen, history, document[forms, cookie, link/anchors, images, embeds/plug-ins, all]]?br />
     讉K对象Ӟ你可以:
     var theImage = document.form[0].elements["someelement"].value;


1、window对象

     览器的 window对象装了整个浏览器环境Q包?window?chrome"Q组成浏览器H体的通用lgQ、实际的 Web面Q以及页面中的事件?br />
     通过 window可以手动讄览器状态条上的状态,执行打开一个新H口、重新调整已昄H口的大、关闭窗口等操作。不q随着动?Web效果?Ajax的流行,q种弹出式窗口越来不被喜Ƣ?br />
window对象的方法和属性可以分?c:

a. 创徏新窗口,l护现有H口行ؓ

     弹出式对话框Qalert、confirm?prompt
     创徏自定义窗口:window.open()
     l护H口Q通过H口的引用能够完成该H口的维护,要维护父H口则用关键字 openerQ要l护包含当前q行脚本的窗口,则应该用关键字 self?br />

b. 在窗口中创徏带分区的文档Q和iframesQ?br />
     frame对象定义了以下元素:parent、length?name。对于跨帧通信而言Qname?parent属性特别重要。其父元?framesetQ集,包括帧的H口Q可以通过每个帧的名字讉K所有子帧(也可以通过帧数l,以对象数量作为烦引|Q每个都可以通过通用的关键字 parent来访问该帧集。兄弟元素之间可以通过 parent和对方的 name属性来讉K?br />
     和标准的帧不一Piframe是内嵌在面中的。你可以为其指定高度和宽度,如果它们都讄?Q那么它?yu)将被隐藏v来。iframe会把它嵌入到的页面视q父元素,q也是它和更高层面q行通信的方法。通常Q你可以使用 document?getElementByIdҎ(gu)来访问它Q也可以使用 target属性蝲入其内容?br />

c. 定时器的创徏和控?br />
     有两cd时器Q一cL一ơ性的Q另一cL周期性用的。两U定时器都能取消Q一ơ性定时器Ҏ(gu)只会被调用一ơ?br />
要想创徏一个不重复触发的定时器Q可以?setTimeoutҎ(gu)Q?br /> var tmOut = setTimeout("func", 5000, "param1", param2,,,,, paramn);

如果x除这个定时器Q可以?clearTimeoutҎ(gu)Q?br /> clearTimeout(tmOut);

如果你想周期性地使用q个定时器,那么应调?setIntervalҎ(gu)Q?br /> var tmOut = setInterval("functionName", 5000);

     同样Q如果想暂停或取消这个周期性定时器Q可以?clearIntervalҎ(gu)。如果你惛_C个周期性定时器Q但又想在参C指定一个函数文字量Q那么你可以在每ơ定时器q期时再?setTimeout函数重新讄q个定时器?br />
注:
     ?IE览器中QsetInterval?setTimeoutҎ(gu)是不支持在最后添加函数调用所需参数的?br />

d. 用来控制览器其他元?/strong>

history对象
     history对象负责l护览器中面载入操作的历史记录。同P其方法和属性能够完成通过览器的后退和前q按钮所能实现的D操作?br />
screen对象
     screen对象所包含的信息是屏幕昄有相关的Q包括其宽度、高度,以及颜色或像素浓淡。虽然他们不是很常用Q但他们对于那些需要修Ҏ(gu)览器H口大小、创建需要特定调色板的带色彩对象{功能而言是不错的选择?br />
navigator对象
     navigator对象中提供的是和览器或其他讉K该页面的用户代理相关的信息。通过它可以检查操作系l、浏览器或浏览器族、安全策略、语a以及 cookie是否启用?br />
document对象
1.链接和锚
     document对象?links集合是由面中所有超链接l成的,它的讉KҎ(gu)和数l一栗?

2.囑փ
     和链接一P囑փ也有其对应的对象Q也可以直接讄他们的属性,如表C图?URL?src属性?br />
3.innerHTML
     使用 innerHTML属性可以修攚w面中M一?HTML元素Q它之所以仍然流行,是因为通过它修攚w面元素时无需构徏整个面的内容,你只需创徏一?HTML格式的字W串Q然后通过 innerHTML可以添加到 Web面中。不q,使用 innerHTML意味着无论?Web面d了什么,他们都无法融合到面?document树上Q因此如果你混合使用 innerHTML和新?DOMҎ(gu)会带来很大的破坏?


2、同源安全策?/strong>

     同源安全{略保了不同域名、协议或端口的页面之间不能够通过脚本q行通信。同源安全策略将应用于不同页面之间的通信Q包括父H口中的表单和内嵌窗口之间的通信Q如帧及 iframe?


3、cookie

     cookie的意义就是一个带有过期时间、域名、\径的型的键/值对Q之所以需要提供这些消息,是ؓ了确保正的服务器能够读取到正确?cookie。这些信息将作ؓ Webh的一部分发送,因此在服务器端和览器都能访问这些数据?br />
讄、读取、删?cookie
// if cookie enabled
window.onload = function() {
    
if (navigator.cookieEnabled) {
        
var sum = readCookie("sum");
        
if (sum) {
            
var iSum = parseInt(sum) + 1;
            alert(
"cookie count is " + iSum);
            
            
if (iSum > 5) {
                eraseCookie(
"sum");                
            } 
else {
                setCookie(
"sum", iSum);
            }
        } 
else {
            alert(
"no cookie, setting now");
            setCookie(
"sum"0);
        }
    }
}

// ?nbsp;cookie有效期设|ؓ 2016q?/span>
function setCookie(key, value) {
    
var cookieDate = new Date(20161110193030);
    document.cookie 
= key + "=" + encodeURI(value) + "; expires=" + cookieDate.toGMTString() + "; path=/";
}

// 在每?nbsp;cookie之前用分号隔开
function readCookie(key) {
    
var cookie = document.cookie;
    
var first = cookie.indexOf(key + "=");
    
    
// 存在 cookie
    if (first >= 0) {
        
var str = cookie.substring(first, cookie.length);
        
var last = str.indexOf(";");
        
        
// 如果是最后一?nbsp;cookie
        if (last < 0) last = str.length;
        
        
// 获取 cookie的?/span>
        str = str.substring(0, last).split("=");
        
return decodeURI(str[1]);
    } 
else {
        
return null;
    }
}

// ?nbsp;cookie的有效期讄成过去,以达到删?nbsp;cookie的目?/span>
function eraseCookie (key) {
    
var cookieDate = new Date(20001110193030);
    document.cookie 
= key + "= ; expirse=" + cookieDate.toGMTString() + "; path/";
}


]]>
Javascript学习指南Q第2版)W记(? 表单、表单事件及校验http://www.tkk7.com/kiant/articles/322211.html黄小?/dc:creator>黄小?/author>Sat, 29 May 2010 07:50:00 GMThttp://www.tkk7.com/kiant/articles/322211.htmlhttp://www.tkk7.com/kiant/comments/322211.htmlhttp://www.tkk7.com/kiant/articles/322211.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/322211.htmlhttp://www.tkk7.com/kiant/services/trackbacks/322211.html 1、跨览器兼容的事g处理
2、选择列表?br /> 3、单选按钮和复选框
4、测?/a>




1、跨览器兼容的事g处理

//可复用的事g处理函数
function catchEvent(eventObj, event, eventHandler) {
  
if (eventObj.addEventListener) {
    eventObj.addEventListener(event, eventHandler, 
false);
  } 
else if (eventObj.attachEvent) {
    event 
= "on" + event;
    eventObj.attachEvent(event, eventHandler);
  }   
}

//可复用的事g取消函数
function cancelEvent(event) {
  
if (event.preventDefault) {
    event.preventDefault();
    event.stopPropagation();
  } 
else {
    event.retrunValue 
= false;
    event.cancelBubble 
= true;
  }    
}



2、选择列表?/strong>

var opts = document.getElementById("someForm").selectOpts.options;
for (var i=0; i<opts.length; i++) {
  
if (opts[i].selected) {
    alert(opts[i].text 
+ " " + opts[i].value);
  }
}

a.动态添加一个新的选项Q由于数l的索引值是?0开始编LQ因此只要以数组?length属性作为烦引|可以在数组的最后面d一个新的数l元素?br /> opts[opts.length] = new Option["Option Four", "Opt4"];

b.删除一个选项Q只需数l中该选项讄?nullQ这h作将会重新安排数l,而不会导致编号不q箋的现象?br /> opts[2] = null;

如果惛_除所有选项Q那么只需数l的 length讄?0?br /> opts.length = 0;


自动选择
//catchEvent(document.getElementById("selectOpts"), "change", checkSelect);
var theEvent = evnt ? evnt : window.event;

var opts = document.getElementById("someForm").selectOpts.options;
for (var i=0; i<opts.length; i++) {
  
if (opts[i].selected) {
    
switch (opts[i].value) {
      
case "Opt1" : opts[i+1].selected = true;
        
break;
      
case "Opt3" : opts[i+1].selected = true;
        
break;
      
case "Opt5" : opts[i+1].selected = true;
        
break;
    }
  }
}



3、单选按钮和复选框

//单选按钮访问:
var buttons = document.getElementById("radioGroup");
for (var i=0; i<buttons.length; i++)
{
  
if (buttons[i].checked) {
    alert(buttons[i].value);
  }
}


//复选框选择Q?/span>
var colorOpts = document.getElementById("someForm").getElementByTagName("input");

//遍历复选框中的每个 checkboxQ检查是否被选中
var isChecked = false;
for (var i=0; i<colorOpts.length; i++) {
  
if ((colorOpts[i].type == "checkbox"&& (colorOpts[i].checked)) {
    ifChecked 
= true;
    
break;
  }
}

//没有一?nbsp;checkbox被选中
if (!isChecked) {
  alert(
"no choose!");
  
}



4、测?/strong>

QQ如果表单数据不完整或无效,如何停止表单提交操作Q?br /> AQ?br />      如果你?DOM Level 0的事Ӟ那么只要在事件句柄中q回 false|q且在事件句柄脚本中取消表单提交操作卛_?br />      如果你?DOM Level 2模型Q那么就?event对象?cancelBubble属性设|ؓ trueQ针?IEQ,q调用其 preventDefaultҎ(gu)Q针对其他浏览器Q?br />

]]>
Javascript学习指南Q第2版)W记(? 排错、调试、事件捕?/title><link>http://www.tkk7.com/kiant/articles/322189.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Sat, 29 May 2010 01:25:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/322189.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/322189.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/322189.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/322189.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/322189.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、排错、调?/a><br /> <a href="#2">2、事?/a><br /> <a href="#3">3、Event对象</a><br /> <a href="#4">4、事件冒?/a><br /> <a href="#5">5、事件句柄和 this</a><br /> <a href="#6">6、DOM Level 2事g模型</a><br /> <a href="#7">7、测?/a><br /> <br /> <br /> <br /> <br /> <a id="1" name="1"></a><strong><br /> 1、排错、调?/strong><br /> <br />      Firebug是最常用?Firefox开发工P同时常用?Web工具q有 Web Developer toolkitQ该工具功能包括面 HTML?CSS代码的校验、可讉K性检查、查?CSS?cookies、检查图像、查?JavaScript修改后的面源代码(包括动态源代码Q? <hr color="#3366ff" size="1" /> <br /> <a id="2" name="2"></a><strong><br /> 2、事?br /> </strong><br />      事g包括Q用L面事Ӟ鼠标、键盘触发的Q、逻辑事gQ一个处理的l果Q、和变化事gQ修Ҏ(gu)档的操作Q?br /> <br /> <h2>事g句柄 (Event Handlers)</h2> <p>HTML 4.0 的新Ҏ(gu)之一是能够 HTML 事g触发览器中的行为,比如当用LL?HTML 元素时启动一D?JavaScript。下面是一个属性列表,可将之插?HTML 标签以定义事件的行ؓ?/p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>此事件发生在何时...</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a target="_top">onabort</a></td> <td>囑փ的加载被中断?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onblur</a></td> <td>元素失去焦点?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onchange</a></td> <td>域的内容被改变?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onclick</a></td> <td>当用LL个对象时调用的事件句柄?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">ondblclick</a></td> <td>当用户双L个对象时调用的事件句柄?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onerror</a></td> <td>在加载文档或囑փ时发生错误?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onfocus</a></td> <td>元素获得焦点?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeydown</a></td> <td>某个键盘按键被按下?/td> <td>3</td> <td>1</td> <td>No</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeypress</a></td> <td>某个键盘按键被按下ƈ村ּ?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onkeyup</a></td> <td>某个键盘按键被松开?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onload</a></td> <td>一张页面或一q图像完成加载?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmousedown</a></td> <td>鼠标按钮被按下?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >onmousemove</a></td> <td>鼠标被移动?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseout</a></td> <td>鼠标从某元素Ud?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseover</a></td> <td>鼠标Ud某元素之上?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onmouseup</a></td> <td>鼠标按键被松开?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onreset</a></td> <td>重置按钮被点凅R?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onresize</a></td> <td>H口或框架被重新调整大小?/td> <td>4</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onselect</a></td> <td>文本被选中?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onsubmit</a></td> <td>认按钮被点凅R?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a target="_top">onunload</a></td> <td>用户退出页面?/td> <td>3</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> <br /> <strong>内联模式/内联注册模式</strong>Q?br /> 以属性的形式?HTML元素d属性的Ҏ(gu)?br /> <body onload="var 1=23; i*=3; alert(i);"><br /> <body onload="calcNumber();"><br /> <br /> <strong>传统模式/传统注册模式</strong>Q?br /> 通过对象属性将一个函数指zؓ事g句柄。如果想用事g处理Q那么可以将事g句柄的D?null?br /> window.onload = calcNumber;<br /> <br /> <br /> 注:<br />      ?DOM Level 0事g模型中,M对象只允许指定一个事件句柄。如果你想针Ҏ(gu)一特定对象的某个事件指定多个函敎ͼ则需要在事g句柄代码中列Z们:<br /> <br /> 内嵌模式Q?br /> <body onload="helloMsg(); helloTwice();"><br /> <br /> 传统模式Q?br /> function helloMsg() {<br />     var helloString = "hello there";<br />     alert(helloString);<br />     helloTwice();<br /> }<br /> <br /> 当要求浏览器停止执行事g行ؓQ可以从事g句柄函数中返?false倹{? <hr color="#3366ff" size="1" /> <br /> <a id="3" name="3"></a><strong><br /> 3、Event对象<br /> </strong><br />      Event对象是和所有事件相关的。它有一些用来提供事件相关信息的属性,?Web面中鼠标点ȝ位置?br /> <br />      IE?Event视ؓ window对象的属性。当处理事gӞ通过E序讉K window对象Q其所包含的数据也会相应的q行填充? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> window.event.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> window.event.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown = mouseDown;</span></div> <br />      在基?Netscape的浏览器Q如 Firefox、Mozilla、Opera?SafariQ中Q获?Event对象的方法是不同的:他将作ؓ函数的一部分传入? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown(theEvent) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> mouseDown;</span></div> <br />      处理q些览器差异的Ҏ(gu)之一是检查传入函数的 Event对象是否已经实例化。如果是Q那么将q个 Event对象赋给一个局部变量;否则Q将假定 window.event事gQƈ其赋给q个局部变量? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> mouseDown(nsEvent) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> theEvent </span><span style="color: #000000">=</span><span style="color: #000000"> nsEvent </span><span style="color: #000000">?</span><span style="color: #000000"> nsEvent : window.event;    </span><span style="color: #008000">//</span><span style="color: #008000">判断 nsEvent对象是否已定义。定义则赋|否则选择 window.event属?/span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">var</span><span style="color: #000000"> locString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">X = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenX </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"> Y = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theEvent.screenY;<br />     alert(locString);<br /> }<br /> <br /> document.onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> mouseDown;</span></div> <br /> <br /> <h2>鼠标 / 键盘属?/h2> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a >altKey</a></td> <td>q回当事件被触发Ӟ"ALT" 是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >button</a></td> <td>q回当事件被触发Ӟ哪个鼠标按钮被点凅R?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >clientX</a></td> <td>q回当事件被触发Ӟ鼠标指针的水q_标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >clientY</a></td> <td>q回当事件被触发Ӟ鼠标指针的垂直坐标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >ctrlKey</a></td> <td>q回当事件被触发Ӟ"CTRL" 键是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >metaKey</a></td> <td>q回当事件被触发Ӟ"meta" 键是否被按下?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >relatedTarget</a></td> <td>q回与事件的目标节点相关的节炏V?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >screenX</a></td> <td>q回当某个事件被触发Ӟ鼠标指针的水q_标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >screenY</a></td> <td>q回当某个事件被触发Ӟ鼠标指针的垂直坐标?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >shiftKey</a></td> <td>q回当事件被触发Ӟ"SHIFT" 键是否被按下?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> 注:<br />      ?IE中,fromElement 对于 mouseover ?mouseout 事gQfromElement 引用Ud鼠标的元素?nbsp;<br />      而在 Mozilla/Firefox中,relatedTarget q回与事件的目标节点相关的节炏V?<br /> 要解x览器差异Q可以用:<br /> var oldElement = theEvent.fromElement ? theEvent.fromElement : theEvent.relatedTarget; <hr color="#3366ff" size="1" /> <br /> <a id="4" name="4"></a><strong><br /> 4、事件冒?br /> </strong><br />      如果你ؓ多个嵌套的元素设|相同的事g句柄Q会发生什么呢Q他们将以什么样的顺序触发?如果你想使得一ơ只影响一个元素,那么如何保存触发事g句柄的事件呢Q?br /> <br />      要管理元素堆栈中的事Ӟ其中一个方法就是众所周知的事件冒泡。在事g冒中,最内部的元素将首先触发该事Ӟ然后堆栈内的下一个元素触发该事gQ以此类推,直到最外面的元素。如果事件句柄被指定l所有元素,那么q些事g依ơ被触发?br /> <br />      如果 div2?div1内部Q?div1又在 document内部Q三者都做了事g处理。当事g触发的时候,优先最里面?div2元素Q然后是 div1元素Q最后是 document元素?br /> <br />      如果你有一个元素堆栈,q且只希望一个元素触发该事g句柄Q那么你可以取消事g冒机制。如果在 IE中要取消一个事件冒泡,可以使用 IE中事件的 cancelBubble属性;对于 Mozilla而言Q则应该使用事g?stopPropagationҎ(gu)。你可以先检?stopPropagationҎ(gu)是否存在Q然后根据其l果定使用哪种Ҏ(gu)Q? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> stopEvent(evnt) {<br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evnt.stopPropagation) evnt.stopPropagation;<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> evnt.cancelBubble </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #008000">//</span><span style="color: #008000">注:IE 7中调试出错,提示信息 "stopPropagation为空或不是对??/span></div> <hr color="#3366ff" size="1" /> <br /> <a id="5" name="5"></a><strong><br /> 5、事件句柄和 this<br /> </strong><br />      this关键字表C的是当前调用的函数或者方法的所有者。对于一个全局变量而言Q它表示的就?window对象。对于一个对象的Ҏ(gu)而言Q它表示的就是该对象实例。而在一个事件句柄中Q它表示的就是接收到该事件的元素? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">first</span><span style="color: #000000">"</span><span style="color: #000000">).onmousedown </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">() {<br />     alert(</span><span style="color: #0000ff">this</span><span style="color: #000000">);    </span><span style="color: #008000">//</span><span style="color: #008000">?nbsp;Firefox中将输出 "[object HTMLDivElement]"</span><span style="color: #008000"><br /> </span><span style="color: #000000">    alert(</span><span style="color: #000000">"</span><span style="color: #000000">first element event</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }</span></div> <hr color="#3366ff" size="1" /> <br /> <a id="6" name="6"></a><strong><br /> 6、DOM Level 2事g模型</strong><br /> <br />      对于堆栈内元素的事g处理Q还有一U被UCؓ事g捕捉(event capturing)?cascade-down的事件处理机制。对于前面这个包?个元素的CZ而言Q事件将从最外面的元素开始触发:window -> div1 -> div2?br /> <br />      老事件模型和新的 DOM Level 2事g模型之间Q主要区别:<br /> a.C件模型ƈ不依赖于特定的事件来处理属性;<br /> b.你可以对M一个对象的M一U事件注册多个事件句柄函数?br /> <br />      新的事g句柄提供?个方法:<br /> addEventListenerQ添加一个事件监听器Q?br /> removeEventListenerQ删除一个事件监听器Q?br /> dispatchEventQ分发一个新的事件?br /> <br /> CZQ?br /> object.addEventListener('event', eventFunction, boolean);<br /> <br />      ?click?load之类的事件是其第一参数Q第二个参数是指定的事g句柄函数Q第三个参数用来指定事g是以 cascade-down或者冒泡模式处理的。当W三个参Cؓ false时这个事件监听器以冒模式处理Q否则将把这个事件监听器Ҏ(gu)事g捕捉模型? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000"> cascadeDown(evnt) {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">Capturing: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> bubbleUp(evnt) {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">Bubbling: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /> }<br /> <br /> window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> setup;<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> setup(evnt) {<br />     </span><span style="color: #008000">//</span><span style="color: #008000">事g捕捉</span><span style="color: #008000"><br /> </span><span style="color: #000000">    document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, cascadeDown, </span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />     <br />     </span><span style="color: #008000">//</span><span style="color: #008000">事g冒</span><span style="color: #008000"><br /> </span><span style="color: #000000">    document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     document.forms[</span><span style="color: #000000">0</span><span style="color: #000000">].elements[</span><span style="color: #000000">0</span><span style="color: #000000">].addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, bubbleUp, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> ?nbsp;Firefox中,单击按钮顺序生?个对话框<br /> <br /> Capturing: [object HTMLDocument]<br /> Capturing: [object HTMLFormElement]<br /> Capturing: [object HTMLInputElement]<br /> Bubbling: [object HTMLInputElement]<br /> Bubbling: [object HTMLFormElement]<br /> Bubbling: [object HTMLDocument]<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> <br />      如果你想停止事g执行Ӟ可以在函C调用 stopPropagationҎ(gu)Q?br /> function cascadeDown(evnt) {<br />     ...<br />     evnt.stopPropagation();<br /> }<br /> <br /> <br />      如果要彻底删除一个事件监听器Q可以?removeEventListenerҎ(gu)Q?br /> document.removeEventListener("click", cascadeDown, true);<br /> <br /> <br />      ?IE中,?addEventListener?removeEventListenerҎ(gu)怼的是 attachEvent?detachEventQ对应语法是Q?br /> object.attachEvent("eventhandler", function);<br /> W一个参数是事g句柄Q第二个是其函数。detachEvent语法cM?br /> <br /> <br /> <strong>跨浏览器解决Ҏ(gu)Q?/strong><br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> setup;<br /> window.onunload </span><span style="color: #000000">=</span><span style="color: #000000"> cleanup;<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> setup(evnt) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> evtObject </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     <br />     </span><span style="color: #008000">//</span><span style="color: #008000">查对象模?/span><span style="color: #008000"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.addEventListener) evtObject.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">click</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.attachEvent) evtObject.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.onclick) evtObject.onclick</span><span style="color: #000000">=</span><span style="color: #000000">clickMe;    <br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000">清理<br /> ?nbsp;IE中,需要跟t?nbsp;window?nbsp;unload事gQ然后调?nbsp;detachEventҎ(gu)清理Q释攄应的内存<br /> ?nbsp;addEventListenerҎ(gu)使用的内存是无需清理的?br /> </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> cleanup() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> evtObject </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">clickme</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (evtObject.detachEvent) evtObject.detachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">, clickMe);<br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> clickMe() {<br />     alert(</span><span style="color: #000000">"</span><span style="color: #000000">clickMe</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }</span></div> <br /> <br /> <h2>IE 属?/h2> <p>除了上面的鼠?事g属性,IE 览器还支持下面的属性:</p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> </tr> <tr> <td>cancelBubble</td> <td>如果事g句柄想阻止事件传播到包容对象Q必L该属性设?true?/td> </tr> <tr> <td>fromElement</td> <td>对于 mouseover ?mouseout 事gQfromElement 引用Ud鼠标的元素?/td> </tr> <tr> <td>keyCode</td> <td>对于 keypress 事gQ该属性声明了被敲ȝ键生成的 Unicode 字符码。对?keydown ?keyup 事gQ它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和用的键盘的布局相关?/td> </tr> <tr> <td>offsetX,offsetY</td> <td>发生事g的地点在事g源元素的坐标pȝ中的 x 坐标?y 坐标?/td> </tr> <tr> <td>returnValue</td> <td>如果讄了该属性,它的值比事g句柄的返回g先高。把q个属性设|ؓ fasleQ可以取消发生事件的源元素的默认动作?/td> </tr> <tr> <td>srcElement</td> <td>对于生成事g?Window 对象、Document 对象?Element 对象的引用?/td> </tr> <tr> <td>toElement</td> <td>对于 mouseover ?mouseout 事gQ该属性引用移入鼠标的元素?/td> </tr> <tr> <td>x,y</td> <td>事g发生的位|的 x 坐标?y 坐标Q它们相对于用CSS动态定位的最内层包容元素?/td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 http://www.w3school.com.cn/htmldom/dom_obj_event.asp</em><br /> <br /> <br /> <h2>标准 Event 属?/h2> <p>下面列出?2 U?DOM 事g标准定义的属性?/p> <table class="dataintable"> <tbody> <tr> <th style="width: 20%">属?/th> <th>描述</th> <th style="width: 7%">IE</th> <th style="width: 7%">F</th> <th style="width: 7%">O</th> <th style="width: 7%">W3C</th> </tr> <tr> <td><a >bubbles</a></td> <td>q回布尔|指示事g是否是v泡事件类型?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >cancelable</a></td> <td>q回布尔|指示事g是否可拥可取消的默认动作?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >currentTarget</a></td> <td>q回其事件监听器触发该事件的元素?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >eventPhase</a></td> <td>q回事g传播的当前阶Dc?/td> <td> </td> <td> </td> <td> </td> <td>Yes</td> </tr> <tr> <td><a >target</a></td> <td>q回触发此事件的元素Q事件的目标节点Q?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >timeStamp</a></td> <td>q回事g生成的日期和旉?/td> <td>No</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> <tr> <td><a >type</a></td> <td>q回当前 Event 对象表示的事件的名称?/td> <td>6</td> <td>1</td> <td>9</td> <td>Yes</td> </tr> </tbody> </table> <em style="font-size: 8pt">注:HTML DOM Event 对象 <a >http://www.w3school.com.cn/htmldom/dom_obj_event.asp</a> <hr color="#3366ff" size="1" /> </em><br /> <a id="7" name="7"></a><strong><br /> 7、测?br /> </strong><br /> Q1Q?DOM Level 0Ҏ(gu)?document?click事g指定一个事件句柄函数?br /> A1Qdocument.onclick = clickMe;<br /> <br /> <br /> Q2Q?DOM Level 2事g处理机制?documentd click事g句柄?br /> A2Qdocument.addEventListener("click", clickMe, false);<br /> <br /> <br /> Q3Q如果事g处理机制能安全运行所有浏览器Q?br /> A3Q?br />     if (evtObject.addEventListener) evtObject.addEventListener("click", clickMe, false);<br />     else if (evtObject.attachEvent) evtObject.attachEvent("onclick", clickMe);<br />     else if (evtObject.onclick) evtObject.onclick=clickMe;    <br /> <br /> <br /> Q4Q对于ؓ document对象指定?onclick事g句柄Q如何知道是在屏q的什么位|执行了单击操作Q?br /> A4Q?br />      如果使用 DOM Level 0事g处理pȝQ那么将无法使用 window对象?event对象Q也不能其作ؓ参数传给函数?br />      对于 DOM Level 2事g处理模型而言Qevent对象会传给事g句柄函数Q你可以通过 event对象讉K?screenX?screenY属性?br /> <br /> <br /> Q5Q?DOM Level 2事gpȝQ如何阻止从其他元素中冒泡上来的事g?br /> A5Q?br />      IE所支持的方法和l大多数览器所支持的方法有所不同Q因此你需要分别支?IE和其他浏览器。你可以?event对象是否支持 stopPropagationҎ(gu)。如果支持,则调用它Q否则就?cancelBubble属性的D|ؓ true?br /> <br /> <br /> Q7Q捕?document对象?keydown事g<br /> A7Q? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">window.onload </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">() {    <br />     </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.addEventListener) document.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">keydown</span><span style="color: #000000">"</span><span style="color: #000000">, getKey, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.attachEvent) document.attachEvent(</span><span style="color: #000000">"</span><span style="color: #000000">onkeydown</span><span style="color: #000000">"</span><span style="color: #000000">, getKey);<br />     </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (document.onkeydown) document.onkeydown</span><span style="color: #000000">=</span><span style="color: #000000">getKey;    <br /> }<br /> <br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> getKey(evnt) {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> theEvent </span><span style="color: #000000">=</span><span style="color: #000000"> evnt </span><span style="color: #000000">?</span><span style="color: #000000"> evnt : window.event;<br />     alert(theEvent.which);  </span><span style="color: #008000">//</span><span style="color: #008000">Firefox q回|IE 7提示 undefined</span><span style="color: #008000"><br /> </span><span style="color: #000000">}</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/322189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-29 09:25 <a href="http://www.tkk7.com/kiant/articles/322189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南Q第2版)W记(? 对象、函?/title><link>http://www.tkk7.com/kiant/articles/321921.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Wed, 26 May 2010 08:29:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/321921.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/321921.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/321921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/321921.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/321921.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、字W串基本cd和字W串对象的相互{?br /> </a><a href="#2">2、String对象</a><br /> <a href="#3">3、正则表辑ּ</a><br /> <a href="#4">4、数l?/a><br /> <a href="#5">5、函?/a><br /> <a href="#6">6、匿名函?/a><br /> <a href="#7">7、函数字面量</a><br /> <br /> <br /> <br /> <strong><a id="1" name="1"></a><br /> 1、字W串基本cd和字W串对象的相互{?/strong><br /> <br />      如果创徏的是字符串基本类型,却又以对象的行ؓ讉KQ那?JavaScript会将该基本类型自动{换成对象Q但是{换成?String对象只是一个时变量,q且在属性操作后销毁该对象Q所以这U操作不够有效,多了一ơ{换的q程而已?br /> <br /> var strName = "Shelley"; //字符串基本类?br /> alert(strName.length);  //隐式创徏 String对象Q数g strName相同Qƈ执行 lengthҎ(gu)<br /> <hr color="#3366ff" size="1" /> <br /> <strong><a id="2" name="2"></a><br /> 2、String对象</strong><br /> <br /> 本节内容引自QJavaScript String 对象参考手?br /> http://www.w3school.com.cn/js/jsref_obj_string.asp<br /> <br /> var sObject = new String("Sample string");<br /> <br />      字符串是 JavaScript 的一U基本的数据cd。String 对象?length 属性声明了该字W串中的字符数。String cd义了大量操作字符串的Ҏ(gu)Q例如从字符串中提取字符或子Ԍ或者检索字W或子串?br /> <br />      需要注意的是,JavaScript 的字W串是不可变的(immutableQ,String cd义的Ҏ(gu)都不能改变字W串的内宏V像 String.toUpperCase() q样的方法,q回的是全新的字W串Q而不是修改原始字W串?br /> <br />      在较早的 Netscape 代码基的 JavaScript 实现中(例如 Firefox 实现中)Q字W串的行为就像只ȝ字符数组。例如,从字W串 s 中提取第三个字符Q可以用 s[2] 代替更加标准?s.charAt(2)。此外,对字W串应用 for/in 循环Ӟ它将枚D字符串中每个字符的数l下标(但要注意QECMAScript 标准规定Q不能枚?length 属性)。因为字W串的数l行Z标准Q所以应该避免用它? <hr color="#3366ff" size="1" />  <br /> <a id="3" name="3"></a><br /> <strong>3、正则表辑ּ</strong><br /> <br />      正则表达式是由字W串所l成的表辑ּQ用于匹配、替换或者查扄定的字符丌Ӏ通过 RegExp对象可以昑ּ地创建正则表辑ּQ?br /> var searchPatten = new RegExp('s+');<br /> <br /> 也可以用文字量方式创徏正则表达式:<br /> var searchPatten = /s+/;<br /> <br /> <strong>testҎ(gu)</strong><br /> <br />      testҎ(gu)判断以参数传入的字W串是否与正则表辑ּ相匹配?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000">Javascript rules</span><span style="color: #000000">/</span><span style="color: #000000">i;<br /> </span><span style="color: #008000">/*</span><span style="color: #008000"> var re = new RegExp('s+', 'g');    //对象实例Q第二个参数表示匚w选项 </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">Javascript rules</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (re.test(str))    document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">I guess it does rule</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div> <br /> 其中修饰W?br /> i 执行对大写不敏感的匚w?<br /> g 执行全局匚wQ查找所有匹配而非在找到第一个匹配后停止Q?<br /> m 执行多行匚w?<br /> <br /> <strong>execҎ(gu)<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">JS*</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">ig</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS *(&YJSjs 888JS</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> </span><span style="color: #0000ff">while</span><span style="color: #000000"> (resultArray) {<br />     document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next match starts at </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> re.lastIndex </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     <br />     resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> ׃讄选项 gQRegExp中的 lastIndex属性会讄Z一ơ匹配的位置Q所以每?nbsp;exec调用都会查找下一个匹配。该CZ中d扑ֈ4ơ匹配,当没有匹配时Q将会返回的数值是I?nbsp;nullQ当数组为空值时循环自动l束?nbsp;<br /> <br /> 输出Q?br /> JS next match starts at 6<br /> JS next match starts at 13<br /> js next match starts at 15<br /> JS next match starts at 21<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> </strong>execҎ(gu)返回一个数l,但是数组q不是所有匹配项Q而是当前匚w和所有带圆括L子字W串。如果在表达式中使用圆括号引用正则表辑ּ的某部分Q那么匹配的时候,q些括号所匚w的字W串也会体现在返回的数组中?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> re </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000">(ds)</span><span style="color: #000000">+</span><span style="color: #000000">(j</span><span style="color: #000000">+</span><span style="color: #000000">s)</span><span style="color: #000000">/</span><span style="color: #000000">ig;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cfdsJS *(&dsjjjsYJSjs 888dsdsJS</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> </span><span style="color: #0000ff">while</span><span style="color: #000000"> (resultArray) {<br />     document.writeln(resultArray[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">next match starts at </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> re.lastIndex </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">; i</span><span style="color: #000000"><</span><span style="color: #000000">resultArray.length; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />     {<br />         document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000">substring of </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> resultArray[i] </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br />     document.writeln(</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">)<br />     <br />     resultArray </span><span style="color: #000000">=</span><span style="color: #000000"> re.exec(str);<br /> }<br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> <br /> 输出Q?br /> dsJS next match starts at 6<br /> substring of ds<br /> substring of JS<br /> <br /> dsjjjs next match starts at 16<br /> substring of ds<br /> substring of jjjs<br /> <br /> dsdsJS next match starts at 31<br /> substring of ds<br /> substring of JS<br /> <br /> </span><span style="color: #008000">*/</span></div> <br /> 支持正则表达式的 String 对象的方?br /> search 索与正则表达式相匚w的倹{?<br /> match 扑ֈ一个或多个正则表达式的匚w?<br /> replace 替换与正则表辑ּ匚w的子丌Ӏ?br /> split 把字W串分割为字W串数组?br />  <br /> <br /> 参考:JavaScript RegExp 对象参考手?br /> <a >http://www.w3school.com.cn/js/jsref_obj_regexp.asp</a> <hr color="#3366ff" size="1" /> <br /> <strong><a id="4" name="4"></a><br /> 4、数l?/strong><br /> <br />      数组不一定是一l的Q在 JavaScript中管理多l数l的Ҏ(gu)是ؓ每个数组元素创徏一个新的数l?br /> <br /> var threedPoints = new Array();<br /> threedPoints[0] = new Array(1.2, 3.33, 2.0);<br /> threedPoints[1] = new Array(5.3, 5.5, 5.5);<br /> threedPoints[2] = new Array(6.4, 2.2, 1.9);<br /> var newZPoint = threedPoints[2][2];     //数组以烦引方式访?br /> <br />      数组?concat ?slice都不会改变原有数l,而只是创Z个新的数l以作ؓҎ(gu)的返回倹{?br /> <br />      在大多数情况下,数组元素的顺序ƈ不重要,不过也有些需要维护数l元素顺序的场景Q例如队列。数l维护队列的Ҏ(gu)Q?br /> push 元素添加到数组后面<br /> unshift 元素添加到数组最前面<br /> pop U除数组的最后一个元?br /> shift U除W一个元?br /> <br /> 数组的访?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">通过循环来遍历数l?/span><span style="color: #008000"><br /> </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; i</span><span style="color: #000000"><</span><span style="color: #000000">threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">].length; i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />     alert(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][i]);<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">使用 for<img alt="" src="http://www.tkk7.com/Images/dot.gif" />in 循环</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> itemIndex </span><span style="color: #0000ff">in</span><span style="color: #000000"> threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">]){<br />     document.writeln(threedPoints[</span><span style="color: #000000">0</span><span style="color: #000000">][itemIndex] </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> }<br /> </span></div> <br /> Ҏ(gu)逗号分隔的字W串方式创徏数组<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">var</span><span style="color: #000000"> animalString </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">cats,dogs,birds,horse</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> animalArray </span><span style="color: #000000">=</span><span style="color: #000000"> animalString.split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> alert(animalArray[</span><span style="color: #000000">2</span><span style="color: #000000">]);  </span><span style="color: #008000">//</span><span style="color: #008000">alert box display birds</span></div> <br /> <br /> JavaScript Array 对象参考手?br /> <a >http://www.w3school.com.cn/js/jsref_obj_array.asp</a> <hr color="#3366ff" size="1" /> <br /> <a id="5" name="5"></a><br /> <strong>5、函?/strong> <br /> <br />      JavaScript中函数和对象怼Q你可以定义一个函敎ͼ创徏一个新的函敎ͼ甚至输出一个函数。正是因为有了这个功能,你可以将一个函数给一个变量或数组元素Q甚臛_以将其作为参Cl另一个函数调用?br /> <br />      ?JavaScript中有3U创建函数的Ҏ(gu)Q声明式?静态的、动态的/匿名的、字面量式的。在使用它们之前Q理解各U方法的效果是十分重要的?br /> <br />      如果在一个函C需要执行多个Q务,可以考虑这个函数拆分成几个更小的单元,q样做可提高复用性。在实际中,量让函数短、其特定于某个人物、尽量保持通用是应该遵守的规则? <hr color="#3366ff" size="1" />  <br /> <a id="6" name="6"></a><br /> <strong>6、匿名函?br /> </strong><br />      匿名/动态函数对于定义一个在q行时才能确定需求的函数而言是个很好的方法。匿名函数每ơ访问都会解析一ơ。用匿名函数构造器Q?br /> var variable = new Function("param1", "param2",...,"paramn","function body");<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">/*</span><span style="color: #008000"> <br /> 用户通过 alert对话框来讄定义函数所需的函C及两个参敎ͼ<br /> 然后调用该函敎ͼ<br /> 其生成的结果输出到面上?br /> <br /> 注:FF调试通过QIE7异常<br /> </span><span style="color: #008000">*/</span><span style="color: #000000"><br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">提示输入函数体和参数</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> func </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter function body:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> x </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter value of x:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> y </span><span style="color: #000000">=</span><span style="color: #000000"> prompt(</span><span style="color: #000000">"</span><span style="color: #000000">Enter value of y:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">调用q个匿名参数</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> op </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Function(</span><span style="color: #000000">"</span><span style="color: #000000">x</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">y</span><span style="color: #000000">"</span><span style="color: #000000">, func);<br /> </span><span style="color: #0000ff">var</span><span style="color: #000000"> theAnswer </span><span style="color: #000000">=</span><span style="color: #000000"> op(x, y);       </span><span style="color: #008000">//</span><span style="color: #008000">function anonymous(x, y) {<img alt="" src="http://www.tkk7.com/Images/dot.gif" />}</span><span style="color: #008000"><br /> </span><span style="color: #000000"><br /> </span><span style="color: #008000">//</span><span style="color: #008000">输出函数执行l果</span><span style="color: #008000"><br /> </span><span style="color: #000000">alert(</span><span style="color: #000000">"</span><span style="color: #000000">Function is: </span><span style="color: #000000">"</span><span style="color: #000000">, func);<br /> alert(</span><span style="color: #000000">"</span><span style="color: #000000">x is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> x </span><span style="color: #000000">+</span><span style="color: #000000"> <br />             </span><span style="color: #000000">"</span><span style="color: #000000">; y is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> y);<br /> alert(</span><span style="color: #000000">"</span><span style="color: #000000">The answer is: </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> theAnswer);<br /> <br /> <br /> </span><span style="color: #008000">/*</span><span style="color: #008000"><br /> 输入/输出Q?br /> Function is: return x * y;<br /> x is : 33; y is : 11;<br /> The answer is: 363;<br /> </span><span style="color: #008000">*/</span></div> <hr color="#3366ff" size="1" /> <br /> <a id="7" name="7"></a><br /> <strong>7、函数字面量</strong><br /> <br />      函数字面量也U函数表辑ּQ因样创建的函数成辑ּ的一部分Q而不是一个特有类型的语句Q他们像匿名函数一h有定义函数名Uͼ但函数字面量只会被解析一ơ,它是静态的?br /> <br />      当你惛_现如吧一个函C为另一个函数的参数之类的扩展时Q函数字面量的特色就会显C出来?br /> <br /> //第三个参数作ؓ函数来声?br /> function funcObject(x,y,z){<br />     alert(z(x,y));<br /> }<br /> <br /> //W三个参数是一个函?br /> funcObject(3, 4, function(x, y){ return x*y})<br /> <img src ="http://www.tkk7.com/kiant/aggbug/321921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-26 16:29 <a href="http://www.tkk7.com/kiant/articles/321921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript学习指南Q第2版)W记(一) Script、数据类型和变量、操作符和语?/title><link>http://www.tkk7.com/kiant/articles/321745.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Mon, 24 May 2010 09:13:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/321745.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/321745.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/321745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/321745.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/321745.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、Script?defer属?br /> </a><a href="#2">2、ؓbodyd脚本<br /> </a><a href="#3">3、CDATA节<br /> </a><a href="#4">4、null和undefined变量</a><br /> <a href="#5">5、羃减JavaScript代码<br /> </a><br /> <br /> <a id="1" name="1"></a><br /> <strong>1、Script?defer属?br /> <br /> </strong>     如果defer属性设|ؓ"defer"Q那么表C脚本不会生成M文档内容Q于是浏览器可以提前处理面的剩余部分,在页面处理结束ƈ做好昄准备时才处理脚本部分。defer属性可以提高页面蝲入的速度Q特别是那些引用了大量的JavaScript代码或者庞大的JavaScriptE序库的面?<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000"> defer</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">defer</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"> <br />  <img alt="" src="http://www.tkk7.com/Images/dot.gif" />no content being generated  <br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"> <br /> </span></div> <hr color="#3366ff" size="1" /> <br /> <a id="2" name="2"></a><br /> <strong>2、ؓbodyd脚本<br /> <br /> </strong>     前面我们曄说过Q因为对script元素q行集中理有利于网늚可维护性,所以script元素通常添加在|页上的head元素中。然而,在body元素中添加脚本的原因往往是出于性能的考虑?br /> <br />      因ؓ览器从同一个域名ƈ发蝲入的资源是有限制的,所以,当把脚本d到head元素中时Q首先蝲入的是脚本Q其ơ才是文档的剩余部分。此外,览器可能会延迟面剩余部分的显C,因ؓ脚本中可能会调用document.writeҎ(gu)修改document对象。如果JavaScript文g很庞大,那么|页中的囄以及其他重要的信息将会被延迟昄Q这所带来的问题远比可l护性更加重要?br /> <br />      即在script元素中用defer属性也不一定能完全解决该问题,特别是ƈ发资源访问和面昄的限制?br />  <br />      在High Performance Web SitesQ中译版《高性能|站指南》一书中Q作者推荐将script元素攑֜文档的最末尾处,q样|页的其他部分就可以优先载入。大多数复杂|站的开发h员更們֐于这U方法。这U方法带来的负面影响是脚本不Ҏ(gu)查找Q网늚可维护性也较差?br />  <br />      那么什么才是最x法呢Q我发现大多数网站ƈ不引用庞大的JavaScriptE序库,在保证较好性能的前提下Q将脚本攑֜head元素中,也确保网可l护性的优势。不q,如果的确需要用庞大的JavaScriptE序库,那么可以考虑脚本放在页面的最末尾处?nbsp;<br /> <br />      不论采用何种Ҏ(gu)Q请保脚本位置的一致性,要么全部攑֜head元素中,要么全部在body元素的最末尾处? <hr color="#3366ff" size="1" /> <br /> <a id="3" name="3"></a><strong>3、CDATA节<br /> </strong> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">  <br /> </span><span style="color: #008000">//</span><span style="color: #008000"><![CDATA[   </span><span style="color: #008000"><br /> </span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> hello() {<br />    </span><span style="color: #0000ff">var</span><span style="color: #000000"> msg </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">Hello, <em>World!</em></span><span style="color: #000000">"</span><span style="color: #000000">;<br />    document.open();<br />    document.write(msg);<br />    document.close();<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">]]></span><span style="color: #008000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span><span style="color: #000000"> </span></div> <br />      之所以用CDATA节Q是因ؓXHTML处理器在解释标记型语a时会识别出所有的开始标{֒l束标签?br />  <br />      在页面文件中通过script元素的src属性引用的JavaScriptQ是XHTML标准所兼容的,q且不要求用CDATA节。如果是嵌入的JavaScript代码Q那么就需要用CDATA节Q特别是包含在body元素中的代码。对于大多数览器而言Q还需要用JavaScript注释W(//Q来隐藏CDATA节Q如CZ1.3所C,否则会出现JavaScript错误?br />  <br />      当然Q保持页面整z的最x式是JavaScript代码从页面中dUdQ改成用链接JavaScript文g的方式?br /> <br />      在本书的大多数示例中QJavaScript代码是直接嵌入在面里的Q这样可以提高代码的可读性且易于查。然而,Mozilla推荐所有嵌入的JavaScript代码都从面中移去,攑֜独立的JavaScript文g中。用独立的JavaScript文gQ可以避免校验以及文本解释错误等问题Q而不用担心页面是以HTMLq是XHTML的方式进行处理?br /> <br /> 提示<br />      使用JavaScript文g往往也能提高|页载入的效率,因ؓ览器会在第一ơ蝲入文件的时候进行缓存,引用相同文g时则会从~存中获取?br /> <hr color="#3366ff" size="1" /> <br /> <a id="4" name="4"></a><br /> <strong>4、null和undefined变量<br /> </strong><br /> null变量是已定义的、gؓnull的变量。以下是一个null变量的示例:<br /> var nullString = null; <br /> <br /> 如果变量已经声明但是q没有初始化Q那么就是undefined变量Q?br /> var undefString; <br /> <br /> 如果声明了变量ƈ且赋予了初始|那么该变量就不是null或undefinedQ?br /> var sValue = ""; <br /> <br />      当你使用JavaScriptE序库时Q或者在一些复杂的代码中,某些变量有可能还没有初始化;如果试在表辑ּ中用这L变量Q那么就有可能得到出乎意料的l果Q通常会导致JavaScript错误。如果不定变量的状态,那么可以在条件表辑ּ中测试该变量Q例如: <br /> if (sValue) ...     // 如果变量是null或undefinedQ那么结果ؓtrueQ否则是false <br /> <br />      在第3章中详l介l条件语句,现在你只需要知道该表达式会判断变量sValue是否已经声明q初始化Q如果已声明q初始化则该表达式的gؓtrueQ否则,该表辑ּ的gؓfalse? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000"> (unknownVariable)     </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量没有声明或赋?nbsp; </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (undefinedString)     </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量没有赋?nbsp; </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (nullString)           </span><span style="color: #008000">//</span><span style="color: #008000"> falseQ变量已l声明ƈ且赋|但是所赋的值是null  </span><span style="color: #008000"><br /> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (sValue)                </span><span style="color: #008000">//</span><span style="color: #008000"> trueQ变量已l声明ƈ且赋|包括I字W串Q?nbsp;使用null关键字,可以判断数值是否ؓnullQ?/span></div> <br /> if (sValue == null) <br />      在JavaScript中,即变量已经声明Q但只要q没有初始化是undefined变量。如果变量已l声明ƈ初始化,那么变量׃是null或undefined。然而,在该CZ中它是一个全局变量Q正如之前的章节所qͼ没有以var关键字声明的变量可能会引起各U各L问题?br /> <hr color="#3366ff" size="1" />   <br /> <a id="5" name="5"></a><br /> <strong>5、羃减JavaScript代码<br /> </strong><br />      I格能够提高代码的可L,但同时也会增加文件的大小。通常情况下,q没什么媄响,因ؓ大多数JavaScript文g都非常小。然而,对于某些大型Ajax应用Q或者复杂的JavaScriptE序库来_太大的JavaScript文g会媄响蝲入JavaScript的速度?br />  <br />      如果要尽可能压羃JavaScript文gQ那么可以选用一些免费的工具Q例如Dean Edward的PackerQhttp://dean.edwards.name/packer/Q,它能够在U压~JavaScript代码。或者用Wikipedia?minify"条目Qhttp://en.wikipedia.org/wiki/MinifyQ中所列D的工Pq些工具可以在桌面或者服务器上用?br />  <br />      另一cdh用来保护JavaScript代码版权的。这些工具不仅仅会压~JavaScript代码Q甚臌会对代码q行加密Q从而代码难以阅读? <img src ="http://www.tkk7.com/kiant/aggbug/321745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-24 17:13 <a href="http://www.tkk7.com/kiant/articles/321745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[W记] 技?诀H:在ASP.NET中重写URL http://www.tkk7.com/kiant/articles/320564.html黄小?/dc:creator>黄小?/author>Tue, 11 May 2010 02:52:00 GMThttp://www.tkk7.com/kiant/articles/320564.htmlhttp://www.tkk7.com/kiant/comments/320564.htmlhttp://www.tkk7.com/kiant/articles/320564.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/320564.htmlhttp://www.tkk7.com/kiant/services/trackbacks/320564.html 原文地址Q?br /> 技?诀H:在ASP.NET中重写URL http://blog.joycode.com/scottgu/archive/2007/03/01/94004.aspx

Ҏ(gu)一Q用Request.PathInfo 参数而不是查询字W串
Ҏ(gu)二:使用HttpModule实现URL重写
Ҏ(gu)三:在IIS7中用HttpModule 实现无扩展名的URL重写
Ҏ(gu)四:在IIS5和IIS6中?ISAPIRewrite 来实现无扩展名的URL重写 
在URL重写里处理ASP.NET PostBack
正确地处理CSS和图像引?/a>


例程的URL重写场景
http://www.store.com/products.aspx?category=books
http://www.store.com/products.aspx?category=DVDs
http://www.store.com/products.aspx?category=CDs


Ҏ(gu)一Q用Request.PathInfo 参数而不是查询字W串


http://www.store.com/products.aspx/Books
http://www.store.com/products.aspx/DVDs
http://www.store.com/products.aspx/CDs
 

Ҏ(gu)二:使用HttpModule实现URL重写


http://www.store.com/products/Books.aspx
http://www.store.com/products/DVDs.aspx
http://www.store.com/products/CDs.aspx
 

Ҏ(gu)三:在IIS7中用HttpModule 实现无扩展名的URL重写


http://www.store.com/products/Books
http://www.store.com/products/DVDs
http://www.store.com/products/CDs       

      IIS 7.0使得处理q类情ŞҎ(gu)之极。你现在可以?IIS h道的Q何地Ҏ(gu)行一个HttpModuleQ这意味着你可以用上面的URLRewriter 模块来处理和重写无扩展名的URL(甚至是带?.aspQ?phpQ或 .jsp 扩展名的URL)。下面示范了你在IIS7中该如何配置Q?
<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  
<configSections>
    
<section name="rewriter" 
             requirePermission
="false" 
             type
="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  
</configSections>
  
  
<system.web>      
    
<httpModules>
      
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
    
</httpModules>    
  
</system.web>

  
<system.webServer>
    
<modules runAllManagedModulesForAllRequests="true">
      
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule" />
    
</modules>
    
<validation validateIntegratedModeConfiguration="false" />
  
</system.webServer>

  
<rewriter>
    
<rewrite url="~/products/(.+)" to="~/products.aspx?category=$1" />
  
</rewriter>
  
</configuration> 



Ҏ(gu)四:在IIS5和IIS6中?ISAPIRewrite 来实现无扩展名的URL重写





在URL重写里处理ASP.NET PostBack


      当用URL重写Ӟ会出现这L问题Q?lt;form> 控g昄的URL不是原先h的URL(譬如Q?products/books)Q而是重写q后的URL(譬如Q?products.aspx?category=books)。这意味着Q当你做一个postback到服务器ӞURL不再是你原先q净利落的那个了?      在ASP.NET 2.0中,有个比较q净的诀H你可以用来重写<form>控g的action属性。具体地来说Q你可利用新的ASP.NET 2.0控g适配器扩展架构来定制控g的输出,用你提供的值来覆盖action属性的倹{这不要求在你的.aspx面里做M~码改动Q而只要在你的/app_browsers文g多wd一?browser文gQ注册用一个控仉配cd可输出新的action属性?br />

 
正确地处理CSS和图像引?br />

      不少人在W一ơ用URL重写Ӟ有时会遇上一个疑难杂症,是他们发现他们的图像和CSS样式表引用有时会停止工作。这是因Z们在HTML|页里有对这些文件的相对引用Q当你开始在应用里重写URLӞ你需要意识到览器经怼在不同的逻辑层次l构层上(logical hierarchy levels)h文gQ而不是实际存储在服务器上的东ѝ?

      譬如Q如果我们上面的/products.aspx|页?aspx |页里的logo.jpg有一个相对引用,但是通过 /products/books.aspxq个URL来请求的Q那么浏览器在显C网|Q将会发Z个对/products/logo.jpg的请求,而不是对/logo.jpg的请求。要正确地引用这个文Ӟ认你用根目录限定了(root qualify)CSS和图像引?“/style.css”Q而不?“style.css”)。对于ASP.NET控gQ你也可以?#8220;~”句法从你应用的根目录来引用文?譬如Q?lt;asp:image imageurl="~/images/logo.jpg" runat="server"/>) ?

  附:/Files/kiant/2010.05/UrlRewrite_HttpModule1.FormRewriter.cs.zip  附加CS版的文g


]]>
各浏览器中javascript兼容性问?/title><link>http://www.tkk7.com/kiant/articles/320537.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Mon, 10 May 2010 16:10:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/320537.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/320537.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/320537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/320537.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/320537.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、用setAttribute()改变|页中标{onclick属?br /> </a><a href="#2">2、IE中通过 setAttributed的属?/a><br /> <br /> <br /> <a id="1" name="1"></a><br /> <strong>1、用setAttribute()改变|页中标{onclick属?/strong> *p1<br /> <br />       setAttribute讄style和onclickq些属性在IE中是行不通的? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">function</span><span style="color: #000000"> cancleEvent()<br />     {<br />         document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'');<br />         document.getElementById('g').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">取消事gQ?/span><span style="color: #000000">"</span><span style="color: #000000">;<br />     }<br /> <br />     </span><span style="color: #0000ff">function</span><span style="color: #000000"> setEvent()<br />     {<br />         document.getElementById('a').setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,'alert(</span><span style="color: #000000">"</span><span style="color: #000000">你好Q?/span><span style="color: #000000">"</span><span style="color: #000000">)');</span><span style="color: #008000">//</span><span style="color: #008000">firefox</span><span style="color: #000000">    <br />         document.getElementById('a').onclick</span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000"> () { alert(</span><span style="color: #000000">"</span><span style="color: #000000">This is a test!</span><span style="color: #000000">"</span><span style="color: #000000">); }</span><span style="color: #008000">//</span><span style="color: #008000">IE firefox也有作用,但是使用firebug调试看不C改后的效果,使用上面的方法可以看到?/span><span style="color: #000000">    <br />         document.getElementById('Div1').innerHTML</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">讄事gQ?/span><span style="color: #000000">"</span><span style="color: #000000">;<br />     }<br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span></div> <br /> 注:<br /> *p1Q用setAttribute()改变|页中标{onclick属?nbsp;   <a >http://blog.csdn.net/Cnami/archive/2008/05/27/2486516.aspx</a><br /> <hr color="#3366ff" size="2" /> <br /> <a id="2" name="2"></a><br /> <strong>2、IE中通过 setAttributed的属?/strong> *p2<br /> <br />       IE下setAttribute讄元素的对象、集合和事g属性都只当成普通属性,起不到原有的作用Q但可以直接q行赋值操作?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">script language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript</span><span style="color: #000000">"</span><span style="color: #000000"> type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> </span><span style="color: #000000"><!--</span><span style="color: #000000"><br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> init() {<br />     </span><span style="color: #0000ff">var</span><span style="color: #000000"> obj </span><span style="color: #000000">=</span><span style="color: #000000"> document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">btn</span><span style="color: #000000">"</span><span style="color: #000000">);<br />     obj.onclick</span><span style="color: #000000">=</span><span style="color: #000000">changeValue;<br />     obj.style.background</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#CC6600</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #0000ff">function</span><span style="color: #000000"> changeValue() {<br />     document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">txt</span><span style="color: #000000">"</span><span style="color: #000000">).value </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">New value!</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> }<br /> </span><span style="color: #000000">--></span><span style="color: #000000"><br /> </span><span style="color: #000000"></</span><span style="color: #000000">script</span><span style="color: #000000">></span></div> <br /> 注:<br /> *p2Q[求助]通过 setAttribute d的属性在 IE 下不被实玎ͼ <a >http://bbs.blueidea.com/viewthread.php?tid=2290521</a><br /> <hr color="#3366ff" size="2" /> <br /> <br /> <img src ="http://www.tkk7.com/kiant/aggbug/320537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-11 00:10 <a href="http://www.tkk7.com/kiant/articles/320537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET 会话状?/title><link>http://www.tkk7.com/kiant/articles/320456.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Mon, 10 May 2010 02:34:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/320456.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/320456.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/320456.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/320456.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/320456.html</trackback:ping><description><![CDATA[<br /> <a href="#1">1、ASP.NET 会话状?br /> </a><a href="#2">2、会话状态模?/a><br /> <a href="#3">3、ASP.NET在不同应用程序之间共享Session</a><br /> <a href="#4">4、Session无故丢失</a><br /> <a href="#5">5、客L使用Cookieless的方式存储Session信息<br /> </a><a href="#6">6、Session.SessionID 固定<br /> </a><br /> <br /> <a id="1" name="1"></a><br /> <p><strong>1、ASP.NET 会话状?/strong><br /> <br />       会话状态可在以下情况下使用Q存储特定于单独会话的短期信息,q且需要较高的安全性。不要在会话状态中存储大量的信息。需要注意,ؓ应用E序中每一会话的生存期创徏q维护会话状态对象。在支持许多用户的应用程序中Q这可能会占用大量服务器资源q媄响可~放性?p1 </p> <p>      ASP.NET 默认情况下将会话信息存储?ASP.NET 应用E序的内存空间。?zhn)可以使用一个独立的服务存储会话信息以便重新启动 ASP.NET 应用E序后会话信息仍然保留;或将会话信息存储?SQL Server 中以便会话信息可供网l场中的多个 Web 服务器用(重新启动 ASP.NET 应用E序后会话信息也会保留)Q或会话信息存储在自定义数据存储区。有x多信息,请参?a target="_blank">会话状态模?/a>?/p> <p>      除了会话状态外QASP.NET q提供在应用E序中保留数据的一些其他方式。有xU方式的比较Q请参见 <a target="_blank">ASP.NET 状态管理徏?/a>?p2<br /> <br /> ?<br /> *p1QASP.NET 状态管理徏?nbsp;<a >http://msdn.microsoft.com/zh-cn/library/z1hkazw7(v=VS.80).aspx</a><br /> *p2QASP.NET 会话状?nbsp;<a >http://msdn.microsoft.com/zh-cn/library/87069683(v=VS.80).aspx</a> <hr color="#3366ff" size="2" /> <a id="2" name="2"></a><br /> <strong>2、会话状态模?br /> </strong><br />       ASP.NET 会话状态支持若q用于会话数据的存储选项。每个选项都由 SessionStateMode 枚D中的一个值标识。下面的列表描述了可用的会话状态模式: <p> </p> <ul> <li>InProc 模式Q此模式会话状态存储在 Web 服务器上的内存中。这是默认设|。注意:它是唯一支持 Session_OnEnd 事g的模式?br /> <br /> <li>StateServer 模式Q此模式会话状态存储在一个名?ASP.NET 状态服务的单独q程中。这保了在重新启动 Web 应用E序时会保留会话状态,q让会话状态可用于|络Z的多?Web 服务器。注意:如果模式讄?StateServerQ则存储在会话状态中的对象必L可序列化的?br /> <br /> <li>SQLServer 模式Q将会话状态存储到一?SQL Server 数据库中。这保了在重新启动 Web 应用E序时会保留会话状态,q让会话状态可用于|络Z的多?Web 服务器。注意:如果?SQL Server 模式Q则存储在会话状态中的对象必L可序列化的?br /> <br /> <li>Custom 模式Q此模式允许(zhn)指定自定义存储提供E序?br /> <br /> <li>Off 模式Q此模式用会话状态?</li> </ul> <p>      通过在应用程序的 Web.config 文g中ؓ sessionState 元素?mode 属性分配一?SessionStateMode 枚D|可以指定要让 ASP.NET 会话状态用的模式。除?InProc ?Off 之外Q其他模式都需要附加参敎ͼ例如在本主题后面讨论的q接字符串倹{通过讉K System.Web.SessionState.HttpSessionState.Mode 属性的|可以查看当前选定的会话状态?p3<br /> <br /> 注:<br /> *p3Q会话状态模?nbsp;<a >http://msdn.microsoft.com/zh-cn/library/ms178586(v=VS.80).aspx</a> </p> <hr color="#3366ff" size="2" /> <a id="3" name="3"></a><br /> <p><strong>3、ASP.NET在不同应用程序之间共享Session</strong> *p4<br /> <br />       多个单独的应用程序,如何这些模块集中n份验证与授权q程</p> <p>Ҏ(gu)1Q?br /> 每个独立的Web应用E序攑ֈl一的解x案中Q实现v来复杂,易用性不高?br /> <br /> Ҏ(gu)2Q利用Session会话׃n<br /> InProc模式QSession被存储在IISq程中,每个虚拟目录是隔ȝQ所以无法共享Session?/p> <p>StateServer 模式Q虽然是独立的状态服务器Q进E)Q但在内存中q些应用E序q是隔离的?/p> <p>SQLServer 模式Q由于对Session的全部操作都是由存储q程来实现的Q而且存储q程未进行加密,可以通过修改存储q程的内部结构来辑ֈ׃n的目的?br /> <br />       ASPState数据库ASPStateTempApplications表中存储的是应用E序信息Q每个应用程序在启动的时候在q里会注册一条记录,包括应用E序的IDQ通过哈希法生成的)和应用程序名U。有多少个应用程序,在这个表里就对应多少条记录。那我们现在要做的是把这些记录变成一条记录,也就是要ƺ骗FrameworkQ让它认些不同的应用E序是同一个应用程序?br /> <br />       TempGetAppID存储q程Q这个存储过E是用于通过传递应用程序名U来得到应用E序ID信息的。每个应用程序在调用q个q程Ӟq个q程会去AspStateTempApplications中检查是否有相应的记录,如果没有Q就插入记录Q然后返回相应的ID?br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">    </span><span style="color: #0000ff">ALTER</span><span style="color: #000000"> </span><span style="color: #0000ff">PROCEDURE</span><span style="color: #000000"> </span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">TempGetAppID</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />     </span><span style="color: #008000">@appName</span><span style="color: #000000">    tAppName,<br />     </span><span style="color: #008000">@appId</span><span style="color: #000000">      </span><span style="font-weight: bold; color: #000000">int</span><span style="color: #000000"> OUTPUT<br />     </span><span style="color: #0000ff">AS</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">SET</span><span style="color: #000000"> </span><span style="color: #008000">@appName</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #ff00ff">LOWER</span><span style="color: #000000">(</span><span style="color: #008000">@appName</span><span style="color: #000000">)<br />     </span><span style="color: #008080">--</span><span style="color: #008080">变量值固定,使所有应用程序通用Z?/span><span style="color: #008080"><br /> </span><span style="color: #000000">    </span><span style="color: #0000ff">SET</span><span style="color: #000000"> </span><span style="color: #008000">@appName</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">/lm/w3svc/650056020/root/personnel/share</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">SET</span><span style="color: #000000"> </span><span style="color: #008000">@appId</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #0000ff">NULL</span><span style="color: #000000"><br /> <br />     </span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #008000">@appId</span><span style="color: #000000"> </span><span style="color: #808080">=</span><span style="color: #000000"> AppId<br />     </span><span style="color: #0000ff">FROM</span><span style="color: #000000"> </span><span style="color: #ff0000">[</span><span style="color: #ff0000">tempdb</span><span style="color: #ff0000">]</span><span style="color: #000000">.dbo.ASPStateTempApplications<br />     </span><span style="color: #0000ff">WHERE</span><span style="color: #000000"> AppName </span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #008000">@appName</span><span style="color: #000000"><br /> </span></div> <p><br /> 注:<br /> *p4QASP.NET在不同应用程序之间共享Session  <a >http://www.3qsoft.com/Article.aspx?ID=173</a> </p> <hr color="#3366ff" size="2" /> <a id="4" name="4"></a><br /> <strong>4、Session无故丢失</strong> *p5<br /> <br /> mode="InProc"  <br /> ==  <br /> 默认的配|方式很Ҏ(gu)丢失Session 请参?nbsp; <p>asp中Session的工作原理:  <br /> asp的Session是具有进E依赖性的。ASP Session状态存于IIS的进E中Q也是inetinfo.exeq个E序。所以当inetinfo.exeq程崩溃Ӟq些信息也就丢失。另外,重v或者关闭IIS服务都会造成信息的丢失?nbsp; </p> <p>原因1Q?nbsp; <br /> bin目录中的文g被改写,asp.net有一U机ӞZ保证dll重新~译之后Q系l正常运行,它会重新启动一ơ网站进E,q时׃DSession丢失Q所以如果有access数据库位于bin目录Q或者有其他文g被系l改写,׃DSession丢失  </p> <p>原因2Q?nbsp; <br /> 文g多w项中,如果没有打开“在单独的q程中打开文g夹窗?#8221;Q一旦新Z个窗口,pȝ可能认ؓ是新的Session会话Q而无法访问原来的SessionQ所以需要打开该选项Q否则会DSession丢失  </p> <p>原因3Q?nbsp; <br /> g大部分的Session丢失是客L引v的,所以要从客L下手Q看看cookie有没有打开  </p> <p>原因4Q?nbsp; <br /> Session的时间设|是不是有问题,会不会因旉成丢失  </p> <p>原因5Q?nbsp; <br /> IE中的cookie数量限制Q每个域20个cookieQ可能导致session丢失  </p> <p>原因6Q?nbsp; <br /> 使用web garden模式Q且使用了InProc mode作ؓ保存session的方?nbsp; </p> <p>解决丢失的经?nbsp; <br /> 1. 判断是不是原?造成的,可以在每ơ刷新页面的时候,跟踪bin中某个文件的修改旉  <br /> 2. 做Sessiond日志Q每ơ读写Session都要记录下来Qƈ且要记录SessionID、Session倹{所在页面、当前函数、函C的第几次Session操作Q这h丢失的原因会方便很多  <br /> 3. 如果允许的话Q徏议用state server或sql server保存sessionQ这样不Ҏ(gu)丢失  <br /> 4. 在global.asa中加入代码记录Session的创建时间和l束旉Q超旉成的Session丢失是可以在SessionEnd中记录下来的?nbsp; <br /> 5. 如果有些代码中用客L脚本Q如javascriptl护Session状态,p试调试脚本Q是不是因ؓ脚本错误引vSession丢失  </p> <p>问:Z么Session在有些机器上偶尔会丢失?  <br /> {:可能和机器的环境有关p,比如Q防火墙或者杀毒Y件等Q尝试关闭防火墙?nbsp; </p> <p>问:Z么当调用Session.Abandon时ƈ没有Ȁ发Session_EndҎ(gu)Q?nbsp; <br /> {:首先Session_EndҎ(gu)只支持InProcQ进E内的)cd的Session。其ơ要Ȁ发Session_EndҎ(gu)Q必d在SessionQ即pȝ中已l用Session了)Qƈ且至要完成一ơ请求(在这ơ请求中会调用该Ҏ(gu)Q?nbsp; </p> <p>问:Z么当我在InProc模式下用Session会经怸失?  <br /> {:该问题通常是由于应用程序被回收D的,因ؓ当用进E内SessionӞSession是保存在aspnet_wpq程中,当该q程被回收Session自然也就没有了,定该进E是否被回收可以通过查看pȝ的事件查看器获得信息?nbsp; <br /> 具体信息请参考:  <br /> Session variables are lost intermittently in ASP.NET applications  <br /> http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316148  <br /> ?.0的时候也有一个bug会导致工作进E被回收q启,该bug已经?.1和sp2中修复?nbsp; <br /> 关于该bug的详l信息请参考:  <br /> ASP.NET Worker Process (Aspnet_wp.exe) Is Recycled Unexpectedly.  <br /> http://support.microsoft.com/default.aspx?scid=kb;en-us;Q321792  </p> <p><br /> 问:什么类型的对象可以保存在Session里?  <br /> {:q依赖用的Session的模式,当用的是进E内QInProcQ的Session那么可以L的保存Q何对象。如果你使用了非InProc的模式,则只能保存可以序列化和反序列化的对象Q如果此时保存的对象不支持序列化Q则不能保存到这U模式(非InProcQ的Session里?nbsp; </p> <p>问:Z么在Session_End中不能用Response.Redirect和Server.TransferҎ(gu)跌{面Q?nbsp; <br /> {:Session_End是一个在服务器内部激发的事g处理函数。它是基于一个服务器内部的计时器的,在激发该事g时服务器上ƈ没有相关的HttpRequest对象Q因此此时ƈ不能使用Response.Redirect和Server.TransferҎ(gu)?nbsp; </p> <p>问:在Session_End中是否可以获得HttpContext对象Q?nbsp; <br /> {:不行Q因个事件ƈ没有和Q何的hQRequestQ相兌Q没有基于请求的上下文?nbsp; </p> <p>问:在Web Service中该如何使用SessionQ?nbsp; <br /> {:Z在Web Service中用SessionQ需要在Web Service的调用方做一些额外的工作Q必M存和存储调用Web Service时用的Cookie。详l信息请参考MSDN文档的HttpWebClientProtocol.CookieContainer属性。然而,如果你用代理服务器讉KWeb Service׃框架的限Ӟ两者不能共享Session?nbsp; </p> <p><br /> 问:当我使用webfarmӞ当我重定向到其他的Web服务器时SessionZ么会丢失Q?nbsp; <br /> {:详细信息请参考:  <br /> PRB: Session State Is Lost in Web Farm If You Use SqlServer or StateServer Session Mode  <br /> http://support.microsoft.com/default.aspx?scid=kb;en-us;325056  </p> <p>问:Session在global.asax中的那些事g中有效?  <br /> {:Session只有在AcquireRequestState事g之后有效Q该事g之后的事仉可以使用Session?nbsp; </p> <p><br /> 问:Z可以序讉KSession的状态|Session是否提供了锁定机Ӟ  <br /> {:Session实现了Reader/Writer的锁机制Q?nbsp; <br /> 当页面对Sessionh可写功能Q即面?<%@ Page EnableSessionState="True" %>标记Q,此时直到h完成该页面的Session持有一个写锁定?nbsp; <br /> 当页面对Sessionh只读功能Q即面?<%@ Page EnableSessionState="ReadOnly" %>标记Q,此时知道h完成该页面的Session持有一个读锁定?nbsp; <br /> 读锁定将d一个写锁定Q读锁定不会d读锁定;写锁定将d所有的d锁定。这是Z么两个框架中的同一个页面都d同一个SessionӞ其中一个要{待另一个(E快的那个)完成后,才开始写?nbsp; </p> <p>问:Sessionqx时意味着什么?  <br /> {:Sessionqx时意味着只要你的面讉KQ用)了SessionQ超时时间将被刷斎ͼ可以理解为重新计ӞQ即从该面h开始,重新计超时时间。但是,该页面不能禁用Session。它会自动的讉K当前面的SessionQ刷新超时时间?nbsp; </p> <p>问:在global.asax中的事g处理函数中SessionZ么无效?  <br /> {:依赖于在哪个事g处理函数中用SessionQSession在AcquireRequestState事g之后才有效,该事件之后的所有事件处理函数都可以使用SessionQ之前的则不能?nbsp; </p> <p><br /> 问:当我使用InProc模式保存SessionӞ此时的Session是保存在哪里Q?nbsp; <br /> {:不同的IIS的处理方式不同,  <br /> 当用的是IIS5的时候Session是保存在aspnet_wp.exe的进E空间里的?nbsp; <br /> 当用的是IIS6Ӟ默认情况下所有的应用E序׃n应用E序池,Session保存在w3wp.exe的进E空间中?nbsp; </p> <p>问:当页面出现错误后我的Session是否被保存Q我需要在Session_End中处理一些清理工作,但是p|了,Z么?  <br /> {:Session_End只有在Sessionq行在InProc模式下才会被执行。Session_End使用的帐hq行aspnet_wp工作q程的帐Pq个可以在machine.config中设|)。因此,如果在Session_EndҎ(gu)里,使用集成安全性链接到SQLQ它?yu)用aspnet_wpq程的帐h开链接Q此时成功与否则依赖于你的SQL的安全性设|?nbsp; </p> <p>问:在Session_End是我是否可以获得有效的HttpSessionState和HttpContext对象Q?nbsp; <br /> {:你可以在q个Ҏ(gu)中获得HttpSessionState对象Q可以直接用Session来访问即可。但是不能获得HttpContext对象Q因事gq没有和Mh相关联,因此不存在上下文对象?nbsp; </p> <p>问:在SQLServer模式下用SessionQؓ什么我的Session不过期?  <br /> {:在SqlServer模式下,Session的过期是通过SQL Agent的注册工作完成的Q请查你的SQL Agent是否q行Q?nbsp; </p> <p>问:当我讄EnableSessionState?#8220;ReadOnly”后,但是我在InProc模式下依然可以修改Session的|q是Z么?  <br /> {:即EnableSessionState标示为ReadOnlyQ但是在InProc模式下用户依然可以编辑Session。唯一不同的是Q在hq程中Session不会被锁住?nbsp; </p> <p>问:Z么在切换成SQLServer模式后我的请求被挂v了?  <br /> {:查在Session里面是否都保存的是可以保存在SQLServer模式下的对象Q即q些对象必须支持序列化?nbsp; </p> <p><br /> 问:当Session讄成cookieless后会有什么媄响?  <br /> {:当把cookieless讄成trueӞ主要会有下面的约束:  <br /> 1、在面中不能用绝寚w?nbsp; <br /> 2、在应用E序中在除了Http和Https之间的切换时需要完成一些其他的步骤?nbsp; <br /> 如果发送一个链接给其他人,此时的URL里面包含Session ID的信息,所以两个h公用一个Session?nbsp; <br /> <br /> 注:<br /> *p5QSession丢失 <a >http://topic.csdn.net/u/20081208/14/c154543c-8e86-406b-82a2-d3cc6f736b0d.html</a> </p> <hr color="#3366ff" size="2" /> <a id="5" name="5"></a><br /> <strong>5、客L使用Cookieless的方式存储Session信息</strong><br /> <br />       sessionState中的cookieless="false"改ؓQcookieless="true"Q这P客户端的Session信息׃再用Cookie存储了,而是其通过URL存储。关闭当前的IEQ打开一个新IEQ重新访问刚才的Web应用E序Q浏览器地址׃变ؓ http://localhost/MyTestApplication/(<strong>ulqsek45heu3ic2a5zgdl245</strong>)/default.aspx中黑体标出的是客户端的Session ID。注意,q段信息是由IIS自动加上的,不会影响以前正常的连接?*p6 <br /> <br /> 问:当Session讄成cookieless后会有什么媄响?  <br /> {:当把cookieless讄成trueӞ主要会有下面的约束:  <br /> 1、在面中不能用绝寚w?nbsp; <br /> 2、在应用E序中在除了Http和Https之间的切换时需要完成一些其他的步骤?nbsp; <br /> 如果发送一个链接给其他人,此时的URL里面包含Session ID的信息,所以两个h公用一个Session?*p7<br /> <br /> 注:<br /> *p6Q[ASP.NET] Session 详解  <a >http://www.blueidea.com/tech/program/2004/1856.asp</a><br /> *p7QSession丢失 <a >http://topic.csdn.net/u/20081208/14/c154543c-8e86-406b-82a2-d3cc6f736b0d.html</a> <hr color="#3366ff" size="2" /> <p> <a id="6" name="6"></a><br /> <strong>6、Session.SessionID 固定</strong></p> <ul> <li>IsNewSessionQ取得|指出工作階段是否以目前要求徏立?br /> <br /> <li>SessionIDQ取得工作階D늚唯一工作階段識別項?</li> </ul> <p>re: 因為Session在還沒裝物g之前, ID都不是固定的. 如果(zhn)c予Session內容, ex: Session["xxx"]=123 , (zhn)會發現ID會固定. *p8<br /> <br /> 注:<br /> *p8Q[ASP.Net]Session.IsNewSession與Session.SessionID <a >http://www.dotblogs.com.tw/yilinliu/archive/2009/04/24/8163.aspx</a><br /> <hr color="#3366ff" size="2" /> <p> </p> <p> </p> <img src ="http://www.tkk7.com/kiant/aggbug/320456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-10 10:34 <a href="http://www.tkk7.com/kiant/articles/320456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp.net获取|站路径http://www.tkk7.com/kiant/articles/320085.html黄小?/dc:creator>黄小?/author>Sat, 08 May 2010 16:02:00 GMThttp://www.tkk7.com/kiant/articles/320085.htmlhttp://www.tkk7.com/kiant/comments/320085.htmlhttp://www.tkk7.com/kiant/articles/320085.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/320085.htmlhttp://www.tkk7.com/kiant/services/trackbacks/320085.html
引用自:
asp.net获取|站路径
http://hi.baidu.com/zhangfengbang/blog/item/5f99d74b0ce661f883025cbc.html
HttpRequest 成员
http://msdn.microsoft.com/zh-cn/library/system.web.httprequest_members(v=VS.80).aspx
ASP.NET获取|站根目录的url的函敎ͼ很简?br /> http://www.xueit.com/html/2009-03/21_932_00.html
 



|站在服务器盘上的物理路径: HttpRuntime.AppDomainAppPath
虚拟E序路径: HttpRuntime.AppDomainAppVirtualPath


M于Request/HttpContext.Current{相关的Ҏ(gu), 都只能在有请求上下文或者页面时使用. 卛_无请求上下文?HttpContext.Current为null. 而上面提到的Ҏ(gu)一直可?

对于全局Cache对象的访问亦?



CZQ输出asp.net |站路径?/strong> 

private void responseHtml()
    {
         System.Text.StringBuilder sb 
= new System.Text.StringBuilder();
  
//输出:当前旉: 2007-08-30 11:03:49
         sb.Append(string.Format("当前旉: {0}", Server.HtmlEncode(DateTime.Now.ToString())));
         sb.Append(
"<br />");

  
//当前h的虚拟\? /aDirectory/Sample/responseHtml.aspx
         sb.Append(string.Format("当前h的虚拟\? {0}",Server.HtmlEncode(Request.CurrentExecutionFilePath)));
         sb.Append(
"<br />");

  
//获取当前应用E序的根目录路径: /aDirectory
         sb.Append(string.Format("获取当前应用E序的根目录路径: {0}", Server.HtmlEncode(Request.ApplicationPath)));
         sb.Append(
"<br />");

  
//当前h的虚拟\? /aDirectory/Sample/responseHtml.aspx
         sb.Append(string.Format("当前h的虚拟\? {0}",Server.HtmlEncode(Request.FilePath)));
         sb.Append(
"<br />");

  
//当前h的虚拟\? /aDirectory/Sample/responseHtml.aspx
         sb.Append(string.Format("当前h的虚拟\? {0}",Server.HtmlEncode(Request.Path)));
         sb.Append(
"<br />");

  
//获取当前正在执行的应用程序的根目录的物理文gpȝ路径: E:\Visual Studio 2005\
         sb.Append(string.Format("获取当前正在执行的应用程序的根目录的物理文gpȝ路径: {0}", Server.HtmlEncode(Request.PhysicalApplicationPath)));
         sb.Append(
"<br />");

  
//获取与请求的 URL 相对应的物理文gpȝ路径: E:\Visual Studio 2005\\aDirectory\
         sb.Append(string.Format("获取与请求的 URL 相对应的物理文gpȝ路径: {0}", Server.HtmlEncode(Request.PhysicalApplicationPath)));
         sb.Append(
"<br />");
         Response.Write(sb.ToString());
     }

 



在ASP.NET~程中经帔R要用Request获取url的有关信?

试的url地址是http://www.test.com/testweb/default.aspx, l果如下Q?br /> Request.ApplicationPath:                     /testweb
Request.CurrentExecutionFilePath:       /testweb/default.aspx
Request.FilePath:                                /testweb/default.aspx
Request.Path:                                     /testweb/default.aspx
Request.PathInfo:
Request.PhysicalApplicationPath:          E:\WWW\testweb\
Request.PhysicalPath:                         E:\WWW\testweb\default.aspx
Request.RawUrl:                                 /testweb/default.aspx
Request.Url.AbsolutePath:                    /testweb/default.aspx
Request.Url.AbsoluteUri:                      http://www.test.com/testweb/default.aspx
Request.Url.Host:                                www.test.com
Request.Url.LocalPath:                        /testweb/default.aspx 

当url中带参数时可以?
HttpContext.Current.Request.Url.PathAndQuery.ToString()//

本页地址:   Request.URL; 

上页地址:  
Request.UrlReferrer  
Request.ServerViables["http_referer"]  
Request.RawUrl  
Request.RawUrl.QueryAndPath  
System.IO.Path.GetFileName(Request.FilePath.ToString()) 




获取|站根目录的url源代?/strong>--2010.05.09
http://www.xueit.com/html/2009-03/21_932_00.html

public static string GetRootURI()
    {
        
string AppPath = "";
        HttpContext HttpCurrent 
= HttpContext.Current;
        HttpRequest Req;
        
if (HttpCurrent != null)
        {
            Req 
= HttpCurrent.Request;
            
string UrlAuthority = Req.Url.GetLeftPart(UriPartial.Authority);
            
if (Req.ApplicationPath == null || Req.ApplicationPath == "/")
                
//直接安装?nbsp;  Web   站点   
                AppPath = UrlAuthority;
            
else
                
//安装在虚拟子目录?nbsp;  
                AppPath = UrlAuthority + Req.ApplicationPath;
        }
        
return AppPath;
    }

可修改ؓ静态属?/span> 

private
 static string rootURI;

    
/// <summary>
    
/// 获得|站根目录的url的函?br />     /// </summary>
    
/// <returns>应用E序根目?nbsp;eg:  http://www.xxx.net:2156/im </returns>
    public static string RootURI
    {
        
get
        {
            
if (string.IsNullOrEmpty(rootURI))
            {
                HttpContext HttpCurrent 
= HttpContext.Current;
                HttpRequest Req;
                
if (HttpCurrent != null)
                {
                    Req 
= HttpCurrent.Request;

                    
string UrlAuthority = Req.Url.GetLeftPart(UriPartial.Authority);
                    
if (Req.ApplicationPath == null || Req.ApplicationPath == "/")
                        
//直接安装?nbsp;  Web   站点   
                        rootURI = UrlAuthority;
                    
else
                        
//安装在虚拟子目录?nbsp;  
                        rootURI = UrlAuthority + Req.ApplicationPath;
                }
            }

            
return rootURI;
        }
    }



]]>
asp.net对于囑փ文g的操?-存储、读取访?/title><link>http://www.tkk7.com/kiant/articles/320052.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Tue, 04 May 2010 07:41:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/320052.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/320052.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/320052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/320052.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/320052.html</trackback:ping><description><![CDATA[<p>内容引用自:<br /> 菜鸟问题,高分求解:关于SQL Server存储囄的问?br /> http://topic.csdn.net/t/20050415/20/3940356.html</p> <p>数据库中Imagecd的数据的存取(For C#/ASP.NET)<br /> http://www.cnblogs.com/billsfeng/archive/2008/07/31/1257579.html</p> <p>SQL Server存储囑փ数据的策略与Ҏ(gu) <br /> http://www.yesky.com/20030113/1648152.shtml<br /> <br /> How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET<br /> http://support.microsoft.com/default.aspx?scid=kb;EN-US;309158<br /> </p> <br /> <br /> <hr color="#999999" size="4" /> <strong>1、图片存?/strong><br /> <br /> a.存储于数据库<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">         在大多数情况下,最好把囄文g与其它数据一起存在数据库中。因为将影像数据文g存储在数据库中有许多优点Q?br /> <br />   <strong>易于理</strong> 当BLOB与其他数据一起存储在数据库中ӞBLOB和表格是数据一起备份和恢复。这样就降低了表格数据与BLOB数据不同步的ZQ而且降低了其他用h意中删除了文件系l中BLOB数据位置的\径和风险。另外,数据存储在数据库中BLOB和其他数据的插入、更新和删除都在同一个事务中实现。这样就保了数据的一致性和文g与数据库之间的一致性。还有一点好处是不需要ؓ文gpȝ中的文g单独讄安全性?br /> <br />   <strong>可׾~?/strong> 管文gpȝ被设计ؓ能够处理大量不同大小的对象,但是文gpȝ不能对大量小文gq行优化。在q种情况下,数据库系l可以进行优化?br /> <br />   <strong>可用?/strong> 数据库具有比文gpȝ更多的可用性。数据库复制允许在分布式环境中复制、分配和潜在的修Ҏ(gu)据。在ȝl失效的情况下,日志转移提供了保留数据库备用副本的方法?/span></div> <em style="font-size: 8pt">引自QSQL Server存储囑փ数据的策略与Ҏ(gu)</em><br /> <br /> <br /> b.存储于文件系l? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">当然Q在某些情况下,图片存储在文gpȝ中将是更好的选择Q?img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />Q?/span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">Q用图片的应用E序需要数据流性能Q例如实时的视频重现?img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />Q?/span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">Q象Microsoft PhotoDraw或者Adobe Photoshopq样的应用程序经常访问BLOBQ这些应用程序只知道怎样讉K文g?br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />Q?/span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">Q需要用一些NTFS文gpȝ中的Ҏ(gu)功能Q例如远E存储?/span></div> <em style="font-size: 8pt">引自QSQL Server存储囑փ数据的策略与Ҏ(gu)</em><br /> <br /> <br />     Q减L据库处理负担,也可以徏立专门的文g服务器存攑֛片和视频.<br /> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>2、数据库存储及读取图片数?/strong><br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">.Image囑փ文g存入到数据库?nbsp; 我们知道数据库里的Imagecd的数据是"二进制数?,因此必须图像文件{换成字节数组才能存入数据库中.<br /> <br /> </span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">.从SQL Server数据库读取Imagecd的数?q{换成bytes</span><span style="color: #ff0000">[]</span><span style="color: #000000">或Image囑փ文g</span></div> <em style="font-size: 8pt">引自Q数据库中Imagecd的数据的存取(For C#/ASP.NET)</em><br /> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>3、asp.net中自定义对图片文件的讉K</strong><br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">web.config<br /> <br />   </span><span style="color: #0000ff"><</span><span style="color: #800000">system</span><span style="color: #ff0000">.web</span><span style="color: #0000ff">></span><span style="color: #000000"> </span><span style="color: #008000"><!--</span><span style="color: #008000"> vs调试、iis6 </span><span style="color: #008000">--></span><span style="color: #000000">   <br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">httpHandlers</span><span style="color: #0000ff">></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">path</span><span style="color: #0000ff">="*.jpg"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">path</span><span style="color: #0000ff">="*.jpeg"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">path</span><span style="color: #0000ff">="*.png"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">path</span><span style="color: #0000ff">="*.bmp"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"></</span><span style="color: #800000">httpHandlers</span><span style="color: #0000ff">></span><span style="color: #000000"><br />   </span><span style="color: #0000ff"></</span><span style="color: #800000">system.web</span><span style="color: #0000ff">></span><span style="color: #000000"><br />   </span><span style="color: #0000ff"><</span><span style="color: #800000">system</span><span style="color: #ff0000">.webServer</span><span style="color: #0000ff">></span><span style="color: #008000"><!--</span><span style="color: #008000"> iis7 </span><span style="color: #008000">--></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">handlers</span><span style="color: #0000ff">></span><span style="color: #000000">      <br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jpgMark"</span><span style="color: #ff0000"> path</span><span style="color: #0000ff">="*.jpg"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="jpegMark"</span><span style="color: #ff0000"> path</span><span style="color: #0000ff">="*.jpeg"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="pngMark"</span><span style="color: #ff0000"> path</span><span style="color: #0000ff">="*.png"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">add </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="bmpMark"</span><span style="color: #ff0000"> path</span><span style="color: #0000ff">="*.bmp"</span><span style="color: #ff0000"> verb</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="包名.ImageHandler, dll文g"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"></</span><span style="color: #800000">handlers</span><span style="color: #0000ff">></span><span style="color: #000000"><br />   </span><span style="color: #0000ff"></</span><span style="color: #800000">system.webServer</span><span style="color: #0000ff">></span></div> <br /> ImageHandler 囄~放与水印效?br /> http://www.tkk7.com/kiant/articles/317469.html<br /> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>4、其他组?/strong><br /> <br /> Persits AspJpeglg囄水印\~略图\囄合ƈ\囄切割\实例教程<br /> http://www.aspxhome.com/asp/component/200812/620614.htm<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><strong>AspJpeg功能摘要</strong><br /> 支持JPEG, GIF, BMP, TIFF ?nbsp;PNG 格式囄. 输出格式始终?nbsp;JPEG<br /> 源图片可以来源于盘、内存、或者记录集Q数据库Q?br /> ~略囄可以保存到磁盘、内存、或者HTTP?br /> 支持三种更改大小方式: nearest-neighbor, bilinear, and bicubic. <br /> 可以在图片之上添加图片或者文? <br /> 支持M?br /> 支持复制Q反转,旋{Q锐化,灰度调节.<br /> 可以调节压羃比率Q以得到最佌出效果和大小. <br /> 从Jpeg囄中抽取EXIF ?nbsp;IPTC数据.<br /> CMYK-RGB转换<br /> Read/write access to individual pixels of an image. Q从图象中对L象素q行?写存取。)</span></div> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>5、C# 处理GIF 囄的问题?Q分不够Q还有)</strong><br /> http://topic.csdn.net/t/20060703/11/4856635.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">8 楼tzzzcQ冷剑)回复?nbsp;2006-07-03 13:33:19 得分 0 <br /> to:Knight94(愚翁)   <br />   Graphics   myImg   =   Graphics.FromImage(zoomImg);//创徏Graphics   <br />   在最后一句出现问?处理GIF   囄时候,提示无法从带有烦引像素格式的囑փ创徏   Graphics)Q老提C:A   Graphics   object   cannot   be   created   from   an<br /> <br /> <br /> 9 楼Knight94Q愚)回复?nbsp;2006-07-03 13:41:34 得分 0<br />  不要用gif囑փ直接生成graphics对象Q?nbsp;  <br />     <br />   处理程Q?nbsp;  <br />   1、gif   分解成png或者jpg文gl;   <br />   2、对每个png或者jpg文gq行处理Q?nbsp;  <br />   3、把处理好的png或者jpg文gl,q行合成一个gif?nbsp;  </span></div> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>6、ASP.NET输出PNG囄时出现GDI+一般性错误的解决Ҏ(gu)</strong><br /> 详细出处参考:http://www.jb51.net/article/17063.htm<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">Response.ContentType = "image/PNG"; <br /> using (MemoryStream ms = new MemoryStream()) <br /> { <br /> img.Save(ms, ChartFormat.Png); <br /> Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length); <br /> } <br /> <br /> 可以输入png囄了?nbsp;<br /> q是׃Response.OutputStreamq个的无法往回读取造成的,也就是它的CanSeek属性是false。png囑փ生成的时候不像jpegQ不是流式的Q已l写入的׃再管了,而是需要往回不断地写入l构数据。但是response无法往回seekQ所以直接用׃行了。改成一个可以seek的MemoryStreamQ先生成好png囄Q然后再输出到response?nbsp;</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/320052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-05-04 15:41 <a href="http://www.tkk7.com/kiant/articles/320052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于在数据库中存储层ơ数据的一点看法与理解http://www.tkk7.com/kiant/articles/319878.html黄小?/dc:creator>黄小?/author>Sun, 02 May 2010 02:48:00 GMThttp://www.tkk7.com/kiant/articles/319878.htmlhttp://www.tkk7.com/kiant/comments/319878.htmlhttp://www.tkk7.com/kiant/articles/319878.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/319878.htmlhttp://www.tkk7.com/kiant/services/trackbacks/319878.html
文章内容引用自:
全面了解数据库设计中分类法
http://blog.csdn.net/hyzhx/archive/2008/03/21/2201465.aspx

在数据库中存储层ơ数据实现无限分层
http://www.52web.com/52article/?view-250.html
http://www.thinkly.cn/index.php/archives/354

商品无限分类的算法如何优?
http://www.javaeye.com/topic/170744

      关于无限分类的设计网上讨论有很多Q说白了是在数据库中设计树的问题,在这里仅Ҏ(gu)所知的做些记录与对比?br /> 假设表结构ؓ下图Qƈ且ؓ某表的外键引用。要求:
1、实现无限层ơ?br /> 2、能扑ֈ节点的\径?br /> 3、能扑ֈ所有子孙节炚w合(获取树)?br />
引用Q?在数据库中存储层ơ数据实现无限分层"

 


Ҏ(gu)1Q邻接列表模?The Adjacency List Model)/递归Ҏ(gu)
http://www.52web.com/52article/?view-250-page-2.html
 
引用Q?在数据库中存储层ơ数据实现无限分层"

 

优点Q结构简单明了,对于节点的维护ƈ不需要额外的工作?br /> ~点Q实现要??需要进行大量的递归操作Q每一ơ数据库查询都需要花费一Ҏ(gu)间?br />  


Ҏ(gu)2Q递归Ҏ(gu)改进


 

Ҏ(gu)?的扩展,新增 path字段以存储节点\径,arrayChild字段存储其下所有节炏V?/p>

优点Q实现要??只需要一ơ查询?br /> ~点Q当节点发生改变旉要维护对应的字段Q且 path?arrayChild以拼串Ş式存储于文本字段Q容易限制节炚w度,q且对于查询效率有媄响?/p>

 


Ҏ(gu)3Q改q前序遍历树
http://www.52web.com/52article/?view-250-page-2.html



如果作ؓ主键标识的节点编号存在外部引用,q需要定义一个链表编?linkId来确保其主键标识固定Qƈ重新定义光表左双围?br />

 

优点Q实现要??只需要一ơ查询,但比Ҏ(gu)2l护h更见方便Q减大量的gQ,而且因ؓ左右DC的是链表的范围Q所以查询效率更高?br /> ~点Q算法未l说明前不如Ҏ(gu)1?直观?nbsp;




ps:
分类法要解决的问题 

      在网站徏设中Q分cȝ法的应用非常的普遍。在设计一个电(sh)子商店时Q要涉及到商品分c;在设计发布系l时Q要涉及到栏目或者频道分c;在设计Y件下载这LE序Ӟ要涉及到软g的分c;如此{等。可以说Q分cL一个很普遍的问题?nbsp;

我常帔R试一些程序员Q而且我几乎毫无例外地要问他们一些关于分cȝ法的问题。下面的丑և个我常常询问的问题。你认ؓ你可以很L地回{么Q?nbsp;

1、分cȝ法常常表Cؓ树的表示和遍历问题。那么,请问Q如果用数据库中的一个Table来表达树型分c,应该有几个字D? 

2、如何快速地从这个Table恢复Z|Q?nbsp;

3、如何判断某个分cL否是另一个分cȝ子类Q?nbsp;

4、如何查找某个分cȝ所有品? 

5、如何生成分cL在的路径?nbsp;

6、如何新增分c? 

在不限制分类的数和每分类的个数时Q这些问题ƈ不是可以L回答的。本文试图解册些问题?br />


]]>
[转] DataBinder.Eval用法http://www.tkk7.com/kiant/articles/319195.html黄小?/dc:creator>黄小?/author>Tue, 27 Apr 2010 05:15:00 GMThttp://www.tkk7.com/kiant/articles/319195.htmlhttp://www.tkk7.com/kiant/comments/319195.htmlhttp://www.tkk7.com/kiant/articles/319195.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/319195.htmlhttp://www.tkk7.com/kiant/services/trackbacks/319195.html 转自Q?br /> [ASP.NET]DataBinder.Eval用法
http://www.cnblogs.com/march3/archive/2007/05/22/755534.html

 

<%# Bind("Subject") %> //l定字段
<%# Container.DataItemIndex + 1%> //实现自动~号
<%# DataBinder.Eval(Container.DataItem, "[n]") %>

通常使用的方?br /> <%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>

其他用法
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# ((DataRowView)Container.DataItem)["adtitle"] %>
<%# ((DataRowView)Container.DataItem)[n] %>
<%# ((DbDataRecord)Container.DataItem)[0] %>
<%# (((自定义类?Container.DataItem)).属?ToString() %>//如果属性ؓ字符串类型就不用ToString()?/p>

DataBinder.Eval用法范例
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
格式化字W串参数是可选的。如果忽略参敎ͼDataBinder.Eval q回对象cd的|

//昄二位数
<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>
//{0:G}代表昄True或False
<ItemTemplate>
 <asp:Image Width="12" Height="12" Border="0" runat="server"
 AlternateText='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>'
 ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>' />
</ItemTemplate>
//转换cd
((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4)
{0:d} 日期只显C年月日
{0:yyyy-mm-dd} 按格式显C年月日
{0:c} 货币样式
<%#Container.DataItem("price","{0:K?,##0.00}")%>
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>


Specifier Type     Format   Output (Passed Double 1.42)  Output (Passed Int -12400)
c  Currency        {0:c}     $1.42     -$12,400
d  Decimal         {0:d}    System.FormatException  -12400
e  Scientific      {0:e}    1.420000e+000    -1.240000e+004
f  Fixed point     {0:f}  1.42    -12400.00
g  General         {0:g}  1.42     -12400
n  Number with commas for thousands  {0:n}  1.42     -12,400
r  Round trippable    {0:r}  1.42     System.FormatException
x  Hexadecimal    {0:x4}  System.FormatException   cf90


{0:d} 日期只显C年月日
{0:yyyy-mm-dd} 按格式显C年月日


样式取决?Web.config 中的讄

{0:c}  ?{0:K?,000.00} 货币样式  标准英国货币样式
<system.web>
      <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" />
</system.web>
昄?K?,000.10

{0:c}  ?string.Format("{0:C}", price); 中国货币样式
<system.web>
      <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-cn" uiCulture="zh-cn" />
</system.web>
昄?K?,000.10

{0:c}  ?string.Format("{0:C}", price); 国货币样式
<system.web>
      <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
昄?$3,000.10

 

DataBinder.Eval(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?
DataBinder是System.Web里面的一个静态类Q它提供?span style="color: #0000ff">EvalҎ(gu)用于化数据绑定表辑ּ的编?/span>Q但是它使用的方式是通过Reflection{开销比较大的Ҏ(gu)来达到易用性,因此其性能q不是最好的。而Container则根本不是Q何一个静态的对象或方法,它是ASP.NET面~译器在数据l定事g处理E序内部声明的局部变量,其类型是可以q行数据l定的控件的数据容器cdQ如在Repeater内部的数据绑定容器叫RepeaterItemQ,在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItemQ这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTableQ则q个数据的cd实际是DataRowView?br />



数据l定以及Container.DataItem几种方式与用法分?/strong>
http://blog.csdn.net/jelink/archive/2006/08/25/1118839.aspx

 

l定到集?<asp:ListBox id="ListBox1" datasource='<%# myArray%>' runat="server">

<%@ Import namespace="System.Data" %> 
<%# ((DataRowView)Container.DataItem)["xxxx"]%> 




What's the deal with Databinder.Eval and Container.DataItem?
http://weblogs.asp.net/rajbk/archive/2004/07/20/what-s-the-deal-with-databinder-eval-and-container-dataitem.aspx

 

<href='<%#  Databinder.Eval(Container.DataItem,"ID","default.aspx?CategoryId={0}" ) %>'>


re: What's the deal with Databinder.Eval and Container.DataItem? 

Answering the question.

<%If DataBinder.Eval(Container.DataItem, "DATAFIELD"<> "" Then

   Response.Write(
"something")

End If %>

Try this.

<%# DataBinder.Eval(Container.DataItem, "DataField").Equals("")?"":"Something"%>


Thursday, August 02, 2007 11:23 PM by someone 




]]>
机箱静音攚w日?/title><link>http://www.tkk7.com/kiant/articles/319236.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Fri, 23 Apr 2010 19:30:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/319236.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/319236.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/319236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/319236.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/319236.html</trackback:ping><description><![CDATA[<br /> <strong>2010.04.24 04:00    室外温度Q?.3?/strong><br /> <br /> 把一面的侧板拆下Q竖立v来档着机箱Q共振的鸣声消失?br /> q停用内|的前置风扇 q一步降低音?现在只剩?nbsp; 昑֍+CPU+甉|风扇转了Q要在进一步降噪只能从q里面着手了<br /> <br /> 机箱侧盖打开有助于降温和消除共振<br /> CPU    832?nbsp; 29?br /> 昑֍    同ؓ55%转速,温度?7℃降?8?br /> <br /> <hr color="#999999" size="4" /> <strong>2010.04.24 03:00    室外温度Q?0.7?/strong><br /> <br /> CPUQE5300    2.6G频3.0    30?br /> CPU风扇Q九(ji)州风阿法400plus        832RPM    <br />     当前转速下音量很小Q但是全速下很吵了Q徏议有Z换个静音的风扇?br /> <br /> 昑֍Q昂?600GSO 384M    自带风扇    55%转?nbsp;   67?br />     昑֍自带的风扇很吵,下次q是换A卡好了,散热好,能分U调节风扇速度?br /> <br /> 机箱Q酷冯毁灭者RC-K100    <br />     机箱自带前置风扇Q很静音Q貌似对降温效果不大<br /> <br /> 后置风扇Q超频三旋风120MM 静x风?nbsp;   未启?br />     音量,改善散热不大<br /> <br /> 昑֍侧板风扇Q超频三旋风80MM 静x风?nbsp;   未启?br />     音量,安装在侧板上会引起震动,Ҏ(gu)善散热不?br /> <br /> 机箱挡板两侧Q隔x<br />     效果未知<br /> <br /> 甉|Q长城双动力静音400SEL ATX 2.31?额定300W<br />     音量很小Q提供的甉|U头,U头不够长,D2个机风扇速控头都没能插上<br /> <br /> <br />     ȝQ?br /> CPU风扇+昑֍风扇+机箱自带前置风扇+后置风扇+昑֍侧板风扇   一?个风扇一赯行还是很늚<br /> 主要的噪xq是昑֍风扇Q应该优先解冻I换发热量点静音版的A?<br /> 只要昑֍散热好了Q剩下两个机风扇都可以不启?br /> <br /> 同时机箱侧板合上的时候似乎有一点的鸣因Q是因ؓ震动Q?br /> 不知道一些品牌机器是怎么做到机箱静音?br /> <br /> <br /> <img src ="http://www.tkk7.com/kiant/aggbug/319236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-24 03:30 <a href="http://www.tkk7.com/kiant/articles/319236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 脚本攉、ؕ?/title><link>http://www.tkk7.com/kiant/articles/283308.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Fri, 23 Apr 2010 10:13:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/283308.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/283308.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/283308.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/283308.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/283308.html</trackback:ping><description><![CDATA[<p><br /> <a target="_blank">源码爱好?层和布局</a> <br /> <br /> 效果:<br /> <a target="_blank">弹出可拖动提C层(模式H口)</a></p> <br /> <br /> <hr color="#999999" size="4" /> [原]解决JS中文q<br /> http://www.cnblogs.com/xjyggd/archive/2009/04/14/1436000.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">[<strong>原]解决JS中文q <br /> </strong>Ҏ(gu)一Q?nbsp;</span><span style="color: #000000"><</span><span style="color: #000000">script src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">../JS/common.js</span><span style="color: #000000">"</span><span style="color: #000000"> type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000"> charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">></</span><span style="color: #000000">script</span><span style="color: #000000">> </span><span style="color: #000000">加上charset</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">可以了?br /> Ҏ(gu)二:把JS文g的编码改成UTF</span><span style="color: #000000">-</span><span style="color: #000000">8</span><span style="color: #000000"> (VS2005的默认编码)<br /> Ҏ(gu)三:把asp.net面的输出编码改成gb2312Q页?/span><span style="color: #000000">/</span><span style="color: #000000">web.config都可讄Q?br /> <br /> <strong>Cookies的内容编码格?/strong><br /> Cookies的g可以保存除了“;”以外的标点符受但是不能保存汉字。保存汉字会出现q?nbsp;<br /> 所以对于Cookies中的内容要进行统一的编码和解码。ؓ了在览器端和服务器端都能够q行解码和编码, 所以要l一使用UTF~码格式?nbsp;<br /> 主要是因为javascript中只能用UTF~码格式?nbsp;</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/283308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-23 18:13 <a href="http://www.tkk7.com/kiant/articles/283308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Response.Redirect(),Server.Transfer(),Server.Execute()的区?/title><link>http://www.tkk7.com/kiant/articles/319194.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Fri, 23 Apr 2010 05:56:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/319194.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/319194.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/319194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/319194.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/319194.html</trackback:ping><description><![CDATA[<br /> 内容转自Q?br /> Response.Redirect(),Server.Transfer(),Server.Execute()的区?br /> http://www.cnblogs.com/3stones/archive/2008/03/20/1114645.html<br /> <br /> <br /> <p><strong>1、Response.Redirect():</strong><br />       Response.RedirectҎ(gu)D览器链接到一个指定的URL。当Response.Redirect()Ҏ(gu)被调用时Q它会创Z个应{,应答头中指出了状态代?02Q表C目标已l改变)以及新的目标URL。浏览器从服务器收到该应{,利用应答头中的信息发Z个对新URL的请求?br />   <br />       q就是说Q用Response.RedirectҎ(gu)旉定向操作发生在客LQ?span style="color: #0000ff">d涉及Cơ与服务器的通信Q两个来回)Q?/span>W一ơ是对原始页面的hQ得C?02应答Q第二次是请?02应答中声明的新页面,得到重定向之后的面?br /> </p> <p><strong>2、Server.Transfer</strong>    <br />       Server.transfer是IIS 5.0新增加的一个功能。它解决了Response.Redirect的两个重要的~陷Q?br />       1Q在Response.Redirect中,我们得不CQ何第一늚输出<br />       2QResponse.Redirect会丢失request中的所有属性,当然我们可以通过一些其他的办法Q比如session来搞定,可是Q有些页的参数是在request中传q来的,q样的话Q就不行?br />      3)  Response.Redirect需要client端再发v一个请求?br /> <br />       Server.transfer很好地解决了这些问题。它是从server端直接向下一发赯求,不需要client再次发送请求。如果你的网非怾赖response.redirectQ这个小的改变可以提高近25%的效率(Ҏ(gu)微Y文档Q?/p> <p>      Server.TransferҎ(gu)<span style="color: #0000ff">把执行流E从当前的ASPX文g转到同一服务器上的另一个ASPX面</span>。调用Server.TransferӞ当前的ASPX面l止执行Q执行流E{入另一个ASPX面Q但新的ASPX面仍用前一ASPX面创徏的应{流?br />   <br />       如果用Server.TransferҎ(gu)实现面之间的导航,<span style="color: #0000ff">览器中的URL不会改变</span>Q因为重定向完全在服务器端进行,览器根本不知道服务器已l执行了一ơ页面变换?br />   <br />       默认情况下,Server.TransferҎ(gu)不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的W二个参数设|成TrueQ就<span style="color: #0000ff">可以保留W一个页面的表单数据和查询字W串</span>?br />   <br />       同时Q用Server.Transfer时应<span style="color: #ff0000">注意一?/span>Q目标页面将使用原始面创徏的应{流Q这DASP.NET的机器验证检查(Machine Authentication CheckQMACQ认为新面的ViewState已被改。因此,如果要保留原始页面的表单数据和查询字W串集合Q必L目标面Page指o?EnableViewStateMac属性设|成False?/p> <p>      Server.Transfer()有一?span style="color: #ff0000">不是Q?/span>当用户在a.aspx中提交了一个表?然后用Server.Transfer()q入 b.aspxQ这时如果用户刷C下页面,览器便会问用户是否“重试”发送表单,如果用户点击“?#8221;Q那么,表单中的数据被重新发送到服务器。如发送表单的作用是Z向数据库中插入一条记录,l果g希望发生的事——同一表单被多ơ加入到数据库中?/p> <p><br /> <br /> <strong>3、Server.Execute</strong>  <br />       Server.ExecuteҎ(gu)允许<span style="color: #0000ff">当前的ASPX面执行一个同一Web服务器上的指定ASPX面</span>Q当指定的ASPX面执行完毕Q控制流E重新返回原面发出Server.Execute调用的位|。这U页面导航方式类g针对ASPX面的一ơ函数调用,<span style="color: #ff0000">被调用的面能够讉K发出调用面的表单数据和查询字符串集?/span>Q所以要把被调用面Page指o的EnableViewStateMac属性设|成False?br /> <br /> </p> <p><strong>4.</strong><br /> Server.Execute("another.aspx")和Server.Transfer("another.aspx")区别:  <br /> Execute是从当前面转移到指定页?q将执行q回到当前页?nbsp; <br /> Transfer是将执行完全转移到指定页?</p> <p><br /> <strong>ȝQ?br /> </strong>在网l状态较好的情况?Redirect(url)Ҏ(gu)效率最?! 可重定向到同一台或非同一台服务器上的aspx或非aspxQhtmlQ资?nbsp;  <span style="color: #0000ff"> *重定?br /> </span>Server.TransferҎ(gu)和Server.ExecuteҎ(gu)最灉|!! 但只能{到同一Application目录下,也有可能D不期望的l果发生    <span style="color: #0000ff">*转发<br /> </span>Server.ExecuteҎ(gu)占用资源最?     <span style="color: #0000ff">*包含<br /> </span><br /> <font color="#0000ff">ps. *ؓW记</font></p> <img src ="http://www.tkk7.com/kiant/aggbug/319194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-23 13:56 <a href="http://www.tkk7.com/kiant/articles/319194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html中图片ATL参数分行、出错显C?/title><link>http://www.tkk7.com/kiant/articles/318957.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Fri, 23 Apr 2010 05:19:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/318957.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/318957.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/318957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/318957.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/318957.html</trackback:ping><description><![CDATA[<br /> 引用自:<br /> html中图片的说明ATL参数能不能分行显C啊<br /> http://topic.csdn.net/t/20040904/21/3340893.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><</span><span style="color: #000000">img   src</span><span style="color: #000000">=</span><span style="color: #000000">img.jpg   alt</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1111111 bbbbbbbbbb</span><span style="color: #000000">"</span><span style="color: #000000">></span></div> <br /> <br /> <hr color="#999999" size="4" /> h高手Q当img的src地址不对Ӟ如何使浏览器不显C?#8220;X”<br /> http://topic.csdn.net/t/20060913/10/5018384.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><</span><span style="color: #000000">img   id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">aa</span><span style="color: #000000">"</span><span style="color: #000000">   src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">aa.jpg</span><span style="color: #000000">"</span><span style="color: #000000">   onerror</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">this.src='file.jpg';</span><span style="color: #000000">"</span><span style="color: #000000">   </span><span style="color: #000000">></span><span style="color: #000000">   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />  当aa.jpg不存在,显Cfile.jpg   。不知道是不是你惌的结果。需要另外的一个图片来替代</span></div> <img src ="http://www.tkk7.com/kiant/aggbug/318957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-23 13:19 <a href="http://www.tkk7.com/kiant/articles/318957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DataTable、DataView、ListBox 数据l定与查?/title><link>http://www.tkk7.com/kiant/articles/280746.html</link><dc:creator>黄小?/dc:creator><author>黄小?/author><pubDate>Thu, 22 Apr 2010 04:35:00 GMT</pubDate><guid>http://www.tkk7.com/kiant/articles/280746.html</guid><wfw:comment>http://www.tkk7.com/kiant/comments/280746.html</wfw:comment><comments>http://www.tkk7.com/kiant/articles/280746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/kiant/comments/commentRss/280746.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/kiant/services/trackbacks/280746.html</trackback:ping><description><![CDATA[<br /> <a target="_blank">DataTable的一些特D用法:Select</a> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_36_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_36_Open_Text.style.display='none'; Codehighlighter1_0_36_Closed_Image.style.display='inline'; Codehighlighter1_0_36_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_36_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_36_Closed_Text.style.display='none'; Codehighlighter1_0_36_Open_Image.style.display='inline'; Codehighlighter1_0_36_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_36_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_0_36_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"> <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />* 补充一下,q可以利用DataView来达到检索的目的?nbsp;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />DataTable dataSource </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> DataTable(); <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />DataView dv </span><span style="color: #000000">=</span><span style="color: #000000"> dataSource.DefaultView; <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />dv.RowFilter </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">columnA = 'abc'</span><span style="color: #000000">"</span><span style="color: #000000">; <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">1.qo后直接获取DataTable </span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">DataTable newTable1 </span><span style="color: #000000">=</span><span style="color: #000000"> dv.ToTable(); <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">2.讄新DataTable的TableName </span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">DataTable newTable2 </span><span style="color: #000000">=</span><span style="color: #000000"> dv.ToTable(</span><span style="color: #000000">"</span><span style="color: #000000">NewTableName</span><span style="color: #000000">"</span><span style="color: #000000">); <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">3.讄新表是否qo重复?拥有的列的列名以及出现的序 <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">卛_以设|新表的字段。但是字D名肯定是老表dataSource中拥有的?nbsp;</span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">DataTable newTable3 </span><span style="color: #000000">=</span><span style="color: #000000"> <br /> <img id="Codehighlighter1_417_445_Open_Image" onclick="this.style.display='none'; Codehighlighter1_417_445_Open_Text.style.display='none'; Codehighlighter1_417_445_Closed_Image.style.display='inline'; Codehighlighter1_417_445_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_417_445_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_417_445_Closed_Text.style.display='none'; Codehighlighter1_417_445_Open_Image.style.display='inline'; Codehighlighter1_417_445_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />dv.ToTable(</span><span style="color: #0000ff">true</span><span style="color: #000000">, </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">string</span><span style="color: #000000">[] </span><span id="Codehighlighter1_417_445_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_417_445_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">"</span><span style="color: #000000">columnA,columnF,columnC</span><span style="color: #000000">"</span><span style="color: #000000"> }</span></span><span style="color: #000000">); <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">4.l合?.3两点?nbsp;</span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">DataTable newTable4 </span><span style="color: #000000">=</span><span style="color: #000000"> <br /> <img id="Codehighlighter1_534_562_Open_Image" onclick="this.style.display='none'; Codehighlighter1_534_562_Open_Text.style.display='none'; Codehighlighter1_534_562_Closed_Image.style.display='inline'; Codehighlighter1_534_562_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_534_562_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_534_562_Closed_Text.style.display='none'; Codehighlighter1_534_562_Open_Image.style.display='inline'; Codehighlighter1_534_562_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />dv.ToTable(</span><span style="color: #000000">"</span><span style="color: #000000">NewTableName</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #0000ff">true</span><span style="color: #000000">, </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">string</span><span style="color: #000000">[] </span><span id="Codehighlighter1_534_562_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_534_562_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">"</span><span style="color: #000000">columnA,columnF,columnC</span><span style="color: #000000">"</span><span style="color: #000000"> }</span></span><span style="color: #000000">);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div> 化,利用 DataViewqo <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />                <span style="color: #000000">DataView dv </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.dtPerson.DefaultView;            </span><span style="color: #008000">//</span><span style="color: #008000">讄一个视图过?/span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">                dv.RowFilter </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">employee_dept_id = </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> departId;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />                </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstSource.DataSource </span><span style="color: #000000">=</span><span style="color: #000000"> dv;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />                </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstSource.DisplayMember </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">employee_name</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />                </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstSource.ValueMember </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> <br />                     <span style="color: #0000ff">this</span>.dvPendingNode.RowFilter = "(node_end_time is null or node_end_time > '2009-6-10 17:55:13')";<br />                     <span style="color: #0000ff">this</span>.dvPendingNode.RowFilter += "and  degree_name in ('', 'q行', '暂停', '搁置') ";</span></div> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>1. 我在一个winformE序里用DataView的RowFilter{选时用两个下划线代表两个字符Q但是怎么{选不出来?</strong><br /> http://topic.csdn.net/t/20040814/04/3273316.html<br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">Q:<br /> 我在一个winformE序里用DataView的RowFilter{选时用两个下划线代表两个个字W,如:   <br />   dv.RowFilter="PID   LIKE   '"+str+"-__"Q这L{选语句在SQL企业理器里执行是能正确{选到记录的,但是Z么在q里׃个都{选不出来Q是不是q里要用别的W号来代表一个字W啊?nbsp;<br /> <br /> A:<br /> "_"   is   probably   very   sql   server   specific,   classes   in   System.Data   is   supposed   to   be   DBMS   independent,   you   can   try   to   use   <br />     <br />   ABC   LIKE   'abc*'   AND   LEN(ABC)=5<br /> <br /> </span></div> <br /> <br /> <br /> <br /> <br /> <hr color="#999999" size="4" /> <strong>2. ListBox 多项选择QDataRowViewQ?/strong> <br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstSource.SelectedItems.Count; i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_73_515_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_515_Open_Text.style.display='none'; Codehighlighter1_73_515_Closed_Image.style.display='inline'; Codehighlighter1_73_515_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_73_515_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_73_515_Closed_Text.style.display='none'; Codehighlighter1_73_515_Open_Image.style.display='inline'; Codehighlighter1_73_515_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span id="Codehighlighter1_73_515_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_73_515_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                DataRowView row </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstSource.SelectedItems[i] </span><span style="color: #0000ff">as</span><span style="color: #000000"> DataRowView;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #0000ff">int</span><span style="color: #000000"> id </span><span style="color: #000000">=</span><span style="color: #000000"> Int32.Parse(row[</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">].ToString());<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #0000ff">string</span><span style="color: #000000"> employee </span><span style="color: #000000">=</span><span style="color: #000000"> String.Format(</span><span style="color: #000000">"</span><span style="color: #000000">{0}<{1}></span><span style="color: #000000">"</span><span style="color: #000000">, row[</span><span style="color: #000000">"</span><span style="color: #000000">employee_name</span><span style="color: #000000">"</span><span style="color: #000000">], row[</span><span style="color: #000000">"</span><span style="color: #000000">dept_name</span><span style="color: #000000">"</span><span style="color: #000000">]);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #008000">//</span><span style="color: #008000">数据填充</span><span style="color: #008000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">                </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #0000ff">this</span><span style="color: #000000">.idList.Contains(id))<br /> <img id="Codehighlighter1_405_514_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_514_Open_Text.style.display='none'; Codehighlighter1_405_514_Closed_Image.style.display='inline'; Codehighlighter1_405_514_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_405_514_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_405_514_Closed_Text.style.display='none'; Codehighlighter1_405_514_Open_Image.style.display='inline'; Codehighlighter1_405_514_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span id="Codehighlighter1_405_514_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_405_514_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                    </span><span style="color: #0000ff">this</span><span style="color: #000000">.idList.Add(id);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                    </span><span style="color: #0000ff">this</span><span style="color: #000000">.valueList.Add(employee);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span></div> </span> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />             <span style="color: #000000">System.Windows.Forms.ListBox.SelectedIndexCollection indexes </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.lstTarget.SelectedIndices;<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> indexes.Count </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">; i </span><span style="color: #000000">>=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i</span><span style="color: #000000">--</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_181_298_Open_Image" onclick="this.style.display='none'; Codehighlighter1_181_298_Open_Text.style.display='none'; Codehighlighter1_181_298_Closed_Image.style.display='inline'; Codehighlighter1_181_298_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_181_298_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_181_298_Closed_Text.style.display='none'; Codehighlighter1_181_298_Open_Image.style.display='inline'; Codehighlighter1_181_298_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span id="Codehighlighter1_181_298_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_181_298_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #0000ff">this</span><span style="color: #000000">.idList.RemoveAt(indexes[i]);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #0000ff">this</span><span style="color: #000000">.valueList.RemoveAt(indexes[i]);<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />            }</span></span></div> <img src ="http://www.tkk7.com/kiant/aggbug/280746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/kiant/" target="_blank">黄小?/a> 2010-04-22 12:35 <a href="http://www.tkk7.com/kiant/articles/280746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创徏TooltipsҎ(gu)http://www.tkk7.com/kiant/articles/317457.html黄小?/dc:creator>黄小?/author>Wed, 21 Apr 2010 04:49:00 GMThttp://www.tkk7.com/kiant/articles/317457.htmlhttp://www.tkk7.com/kiant/comments/317457.htmlhttp://www.tkk7.com/kiant/articles/317457.html#Feedback0http://www.tkk7.com/kiant/comments/commentRss/317457.htmlhttp://www.tkk7.com/kiant/services/trackbacks/317457.htmlQ?br /> 11个出色的创徏Tooltips的方?br /> http://www.qianduan.net/11-excellent-program-to-create-tooltips.html

AjaxCode -- TooltipsQ消息提醒框控g
http://www.open-open.com/ajax/Tooltips.htm


1. Easy CSS Tooltip
http://www.kollermedia.at/archive/2008/03/24/easy-css-tooltip/

 

Here is the 4 line magic (3lines css, 1line html):
/* css tooltip */
a:hover
{
    _background
: Transparent;
}
/*BG color is a must for IE6*/
a.tooltip span
{
    display
: none;
    padding
: 6px 10px;
    text-indent
: 0px;
    line-height
: 18px;
}
a.tooltip:hover span
{
    display
: inline;
    position
: absolute;
    background
: #ffffff;
    border
: 1px solid #cccccc;
    color
: #6c6c6c;
    text-decoration
: none;
}
/* end of css 

Easy <class="tooltip" href="#">Tooltip<span>This is the crazy little Easy Tooltip Text.</span></a>.



2. jtip
http://codylindley.com/blogstuff/js/jtip/






3.





]]>
վ֩ģ壺 ۺɫ鶹| ؼëƬAëƬѲ| ؿˮƵwwwվ| 99ƵֻоƷ| ˳߹ۿŹ| ޳aƬӰԺ| aaëƬȫ| ȾþþƷƵ| ޶Ƶ߹ۿ| ߹ۿ| Ʒһ | 鶹һ| 18Ʒ׽߹ۿ| Իavҹҹˬ| avպƷþþþþa| Ʒ㽶߹ۿ| VAĻ| ϵվۿ| 鶹VAѾƷ| Ļ޵һ| þùѹۿƷ| ҹƷ| aۺaav| ߹ۿվ| Ƶۿ| ĻĻmv | ٸһ˳| ձƷһ| ĻƷ| aרav鶹 | 弦վ߲ѹۿ| רһvavר| avҹӰ߹ۿ| ҹëƬ| ߹ۿ| ޾Ʒվ| þþþþƷAV| è˳վ߹ۿ| þþƷavˮ| 99þ޾Ʒһ| ҹAVպAVȫ|