📄 2.html
字号:
鼠标双击滚屏
<select id="no5" onChange="setStep(this.options[this.selectedIndex].value)">
<option value="400">10</option>
<option value="300">09</option>
<option value="200">08</option>
<option value="150">07</option>
<option value="120">06</option>
<option value="100" selected="selected">05</option>
<option value="50">04</option>
<option value="40">03</option>
<option value="30">02</option>
<option value="10">01</option>
</select>
<span style="color:#737373">(1最快,10最慢)</span>
<button class="cl3" onClick="saveMode()" alt="save" ></button>
<button class="cl2" id="cl" onClick="_blog_load_js();" disabled="true" >转为繁体</button>
<button class="cl4" id="cl" onClick="javascript:window.close()" alt="close"></button>
</div>
</div>
<div id="readModeTxt" class="readModeTxtBox">
<div id="ArticleTitle">
Dojo 教程 笔记 (转载) 二 </div>
<div id="AuthorReadMode">
<span id="Author">作者:小说</span>
<span id="PublicTime">2008-01-18 02:08:17</span>
</div>
<table width="480" border="0" cellpadding="0" cellspacing="0" class="reader_tag" align="center">
<tr>
<td width="60" height="20" align="right">标签:</td>
<td colspan="4" rowspan="2" align="center" valign="top"><div class="tagItem"><a href="http://search.blog.sina.com.cn/blog/search?q=dojo&tag=n&t=tag" target="_blank">dojo</a></div><div class="tagItem"><a href="http://search.blog.sina.com.cn/blog/search?q=%BD%CC%B3%CC&tag=n&t=tag" target="_blank">教程</a></div><div class="tagItem"><a href="http://search.blog.sina.com.cn/blog/search?q=it&tag=n&t=tag" target="_blank">it</a></div> <div style="clear:both"></div>
</td>
</tr>
<tr>
<td width="60" height="20"> </td>
</tr>
</table>
<div id="Content" style="word-wrap:break-word;word-break:break-all;overflow:hidden;" onselectstart="return false;">
<div>
////////////////////////////////////////////////////////////////////////////////////////////
<p>Dojo学习笔记(6. dojo.io.IO & dojo.io.BrowserIO)<br/>
模块:dojo.io.IO</P>
<p>dojo.io.bind</P>
<p>处理请求取回需要的数据并处理</P>
<p> </P>
<p>
这个函数是AJAX中最为重要和有用的函数,dojo.io.bind这个类是用来处理客户端与服务器间通讯的,<br/>
需要通讯的参数由对象dojo.io.Request所定义,具体通讯的方法则由另外一个对象Transport所提供。</P>
<p> </P>
<p>
因此,我们如果需要与服务器通讯,则应该定义一个Request对象,其中包括服务器地址及回调函数,<br/>
例子中Requset都是以匿名对象方式定义的</P>
<p>
虽然我们可以定义一个自己的Transport,但是显然不如直接利用现成的Transport方便。</P>
<p>
Dojo里提供了一个同时兼容IE和Firefox的dojo.io.XMLHTTPTransport,但是这个对象位于<br/>
dojo.io.BrowserIO,因此,一般require dojo.io.IO时,还应该require
dojo.io.BrowserIO</P>
<p> </P>
<p>Usage Example:</P>
<p>dojo.io.bind({<br/>
url: "http://localhost/test.html", //要请求的页面地址<br/>
mimetype: "text/html",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype,<br/>
默认为 "text/plain"<br/>
method:"GET", //默认为"GET"<br/>
sync: false, //默认为异步执行<br/>
useCache: false,
//默认为不使用页面缓存,注意这里的缓存并不是浏览器的缓存,<br/>
而是Dojo自身所维护的页面缓存<br/>
preventCache: false,
//默认为启用浏览器缓存,否则将通过自动增加不同的参数来确保浏览器缓存失效<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时</P>
<p>load: function(type, data, evt) { alert(data); }, //type should
be "load", data is that we wanted<br/>
error: function(type, error) { alert(error.message); }, //error is
dojo.io.Error<br/>
timeout: function(type) { alert("请求超时!"); }<br/>
});</P>
<p>你也可以用一个handle来处理所有的事件</P>
<p> </P>
<p>dojo.io.bind({<br/>
url: "http://localhost/test.html", //要请求的页面地址<br/>
mimetype: "text/html",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时<br/>
handle: function(type, data, evt){<br/>
if(type == "load") { alert(data); } //data is that we wanted<br/>
else if (type == "error") { alert(data.message); } //data is the
error object<br/>
else { ; } //other events maybe need handled<br/>
}<br/>
});<br/>
<br/>
如果没有在Request中指定所用的transport,则Dojo会自动的在已注册的transports中寻找能够处理<br/>
这个Request的transport,如果不能找到,则返回指定的Request。下面是一个指定了transport的例子:</P>
<p>dojo.io.bind({<br/>
url: "http://localhost/test.html", //要请求的页面地址<br/>
mimetype: "text/html",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时<br/>
transport: "XMLHTTPTransport",</P>
<p>load: function(type, data, evt) { alert(data); },<br/>
//type should be "load", data is that we wanted<br/>
error: function(type, error) { alert(error.message); },<br/>
//error is dojo.io.Error<br/>
timeout: function(type) { alert("请求超时!"); }<br/>
});</P>
<p>
你还可以利用bind来得到一个JavaScript所定义的对象(注意mimetype必须要定义为"text/javascript")</P>
<p> </P>
<p>testObj = dojo.io.bind({<br/>
url: "http://localhost/test.js", //test.js里定义了一个对象<br/>
mimetype: "text/javascript",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时<br/>
handle: function(type, data, evt){<br/>
if(type == "load") { alert(data); } //data is a object or
value<br/>
else if (type == "error") { alert(data.message); } //data is the
error object<br/>
else { ; } //other events maybe need handled<br/>
}<br/>
});<br/>
<br/>
下面是一个Post的例子:<br/>
<br/>
dojo.io.bind({<br/>
url: "http://localhost/test.aspx", //要提交的页面地址<br/>
mimetype: "text/html",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时<br/>
method: "POST",<br/>
formNode: dojo.byId("myForm"), //指定提交的Form名称</P>
<p>load: function(type, data, evt) { alert(data); },<br/>
//type should be "load", data is that we wanted<br/>
error: function(type, error) { alert(error.message); }, //error is
dojo.io.Error<br/>
timeout: function(type) { alert("请求超时!"); }<br/>
});</P>
<p> </P>
<p>另一个Post的例子(without Form to post):</P>
<p>dojo.io.bind({<br/>
url: "http://localhost/test.aspx", //要提交的页面地址<br/>
mimetype: "text/html",
//请求的页面的类型,应该设置为与你请求页面类型对应的mimetype<br/>
timeoutSeconds: 3000, //3秒后超时,如果为0则永不超时<br/>
method: "POST",<br/>
content: {a: 1, b: 2}, //要提交的数据</P>
<p>load: function(type, data, evt) { alert(data); },<br/>
//type should be "load", data is that we wanted<br/>
error: function(type, error) { alert(error.message); }, //error is
dojo.io.Error<br/>
timeout: function(type) { alert("请求超时!"); }<br/>
});</P>
<p> </P>
<p>dojo.io.queueBind</P>
<p>
有时,我们需要一次发出多个网页请求,则应该使用dojo.io.queueBind,因为浏览器可能只允许<br/>
同时发出有限个数的请求,如果是使用dojo.io.bind的话,则有可能会申请不到新的XMLHttp对象而<br/>
导致出错。</P>
<p>用法与dojo.io.bind是一样的。</P>
<p> </P>
<p>dojo.io.argsFromMap</P>
<p>用来把对象转换为URL的参数形式<br/>
<br/>
Usage Example:</P>
<p>dojo.io.argsFromMap({a:1,b:2,c:3}); //will return
"c=3&b=2&a=1"<br/>
dojo.io.argsFromMap({name:"名称",value:"值"},"utf");<br/>
//will return "value=%E5%80%BC&name=%E5%90%8D%E7%A7%B0",
有中文的话应该指定utf格式,<br/>
//否则dojo.string.encodeAscii返回的编码是很怪异的<br/>
dojo.io.argsFromMap({a:1,b:2,c:3}, "utf", "c");<br/>
//will return
"b=2&a=1&c=3",最后一个参数可以控制指定名称的值出现在最后<br/>
</P>
<p> </P>
<p>dojo.io.setIFrameSrc</P>
<p>设置IFrame的Src<br/>
<br/>
Usage Example:</P>
<p> </P>
<p>dojo.io.setIFrameSrc(dojo.byId("myFrame"),
"http://localhost/test.htm");<br/>
//myFrame打开指定的网页<br/>
dojo.io.setIFrameSrc(dojo.byId("myFrame"),
"http://localhost/test.htm", true);<br/>
//myFrame打开指定的网页,并覆盖浏览器的历史记录</P>
<p> </P>
<p>TODO:
补充一个kwArgs的例子,我之前在网上看见过,可是现在无论如何也找不到相关的页面了,<br/>
只好以后在举例了</P>
<p> </P>
<p>模块:dojo.io.BrowserIO</P>
<p> </P>
<p>基本上就提供了dojo.io.XMLHTTPTransport这个对象</P>
<p>
XMLHTTPTransport一般能够满足我们的需求,但是其有几个限制:它不能传输文件,不能够成功执行跨<br/>
域名的远程请求,并且不支持 file:// 这样的协议</P>
<p>因此,根据应用要求,我们可能会需要选用其它的transport:
dojo.io.IframeTransport,<br/>
dojo.io.repubsubTranport, dojo.io.ScriptSrcTransport,
ShortBusTransport</P>
<p> </P>
<p>
dojo.io.IframeTransport,用法与xmlhttp是一样的,其优点就是可以跨域,不存在任何的安全问题<br/>
如果Request指定的mimetype是text或javascript,返回的内容应该是放在第一个textarea里的内容,<br/>
如果指定的mimetype是html,则IFrame里的html则是需要的内容。因为浏览器兼容的原因,<br/>
IframeTransport不能正确处理返回类型为XML的请求。</P>
<p> </P>
<p>关于Rpc,这个类似于Remoting的东西,也将在以后对其进行介绍。</P>
<p>
//////////////////////////////////////////////////////////////////////////////////////////<br/>
Dojo学习笔记(7. dojo.dom)</P>
<p>模块:dojo.dom</P>
<p>dojo.dom.isNode</P>
<p>测试指定对象是否为节点</P>
<p>Usage Example:</P>
<p>dojo.dom.isNode(dojo.byId('edtTitle'));</P>
<p>dojo.dom.getUniqueId</P>
<p>取得唯一id</P>
<p>Usage Example:</P>
<p>dojo.dom.getUniqueId(); //will return dj_unique_#</P>
<p>dojo.dom.firstElement = dojo.dom.getFirstChildElement</P>
<p>取得指定节点下的第一个满足指定Tag条件的子节点</P>
<p>Usage Example:</P>
<p>dojo.dom.firstElement(parentNode, 'SPAN');</P>
<p>dojo.dom.lastElement = dojo.dom.getLastChildElement</P>
<p>取得指定节点下的最后一个满足指定Tag条件的子节点</P>
<p>Usage Example:</P>
<p>dojo.dom.lastElement(parentNode, 'SPAN');</P>
<p>dojo.dom.nextElement = dojo.dom.getNextSiblingElement</P>
<p>取得指定节点的下一个满足指定Tag条件的子节点</P>
<p>Usage Example:</P>
<p>dojo.dom.nextElement(node, 'SPAN');</P>
<p>dojo.dom.prevElement = dojo.dom.getPreviousSiblingElement</P>
<p>取得指定节点的前一个满足指定Tag条件的子节点</P>
<p>Usage Example:</P>
<p>dojo.dom.prevElement(node, 'SPAN');</P>
<p>dojo.dom.moveChildren</P>
<p>把指定节点下的所有子节点移动到目标节点下,并返回移动的节点数</P>
<p>Usage Example:</P>
<p>dojo.dom.moveChildren(srcNode, destNode, true);
//仅移动子节点,srcNode中的文字将被丢弃<br/>
dojo.dom.moveChildren(srcNode, destNode,
false);//包括文字和子节点都将被移动到目标节点下</P>
<p>dojo.dom.copyChildren</P>
<p>把指定节点下的所有子节点复制到目标节点下,并返回复制的节点数</P>
<p>Usage Example:</P>
<p>dojo.dom.moveChildren(srcNode, destNode, true);
//仅复制子节点,srcNode中的文字将被忽略<br/>
dojo.dom.moveChildren(srcNode, destNode,
false);//包括文字和子节点都将被复制到目标节点下</P>
<p>dojo.dom.removeChildren</P>
<p>删除指定节点下的所有子节点,并返回删除的节点数</P>
<p>Usage Example:</P>
<p>dojo.dom.moveChildren(node);</P>
<p>dojo.dom.replaceChildren</P>
<p>用指定的新节点替换父节点下的所有子节点</P>
<p>Usage Example:</P>
<p>dojo.dom.replaceChildren(node, newChild);
//目前还不支持newChild为数组形式</P>
<p>dojo.dom.removeNode</P>
<p>删除指定的节点</P>
<p>Usage Example:</P>
<p>dojo.dom.removeNode(node);</P>
<p>dojo.dom.getAncestors</P>
<p>返回指定节点的父节点集合</P>
<p>Usage Example:</P>
<p>dojo.dom.getAncestors(node, null, false);
//返回所有的父节点集合(包括指定的节点node)<br/>
dojo.dom.getAncestors(node, null, true);
//返回最近的一个父节点<br/>
dojo.dom.getAncestors(node, function(el){return true},
false);<br/>
//返回所有满足条件的父节点集合</P>
<p>dojo.dom.getAncestorsByTag</P>
<p>返回所有符合指定Tag的指定节点的父节点集合</P>
<p>Usage Example:</P>
<p>dojo.dom.getAncestorsByTag(node, 'span', false);
//返回所有的类型为SPAN的父节点集合<br/>
dojo.dom.getAncestorsByTag(node, 'span', true);
//返回最近的一个类型为SPAN的父节点</P>
<p>dojo.dom.getFirstAncestorByTag</P>
<p>返回最近的一个符合指定Tag的指定节点的父节点</P>
<p>Usage Example:</P>
<p>dojo.dom.getFirstAncestorByTag(node, 'span');
//返回最近的一个类型为SPAN的父节点</P>
<p>dojo.dom.isDescendantOf</P>
<p>判断指定的节点是否为另一个节点的子孙</P>
<p>Usage Example:</P>
<p>dojo.dom.isDescendantOf(node, ancestor, true);
//判断node是否为ancestor的子孙<br/>
dojo.dom.isDescendantOf(node, node, false); //will return
true<br/>
dojo.dom.isDescendantOf(node, node, true); //will return false</P>
<p>dojo.dom.innerXML</P>
<p>返回指定节点的XML</P>
<p>Usage Example:</P>
<p>dojo.dom.innerXML(node);</P>
<p>dojo.dom.createDocument</P>
<p>创建一个空的文档对象</P>
<p>Usage Example:</P>
<p>dojo.dom.createDocument();</P>
<p>dojo.dom.createDocumentFromText</P>
<p>根据文字创建一个文档对象</P>
<p>Usage Example:</P>
<p>dojo.dom.createDocumentFromText('<?xml version="1.0"
encoding="gb2312" ?><a>1</a>',<br/>
'text/xml');</P>
<p>dojo.dom.prependChild</P>
<p>将指定的节点插入到父节点的最前面</P>
<p>Usage Example:</P>
<p>dojo.dom.prependChild(node, parent);</P>
<p>dojo.dom.insertBefore</P>
<p>将指定的节点插入到参考节点的前面</P>
<p>Usage Example:</P>
<p>dojo.dom.insertBefore(node, ref, false);
//如果满足要求的话就直接退出<br/>
dojo.dom.insertBefore(node, ref, true);</P>
<p>dojo.dom.insertAfter</P>
<p>将指定的节点插入到参考节点的后面</P>
<p>Usage Example:</P>
<p>dojo.dom.insertAfter(node, ref, false);
//如果满足要求的话就直接退出<br/>
dojo.dom.insertAfter(node, ref, true);</P>
<p>dojo.dom.insertAtPosition</P>
<p>将指定的节点插入到参考节点的指定位置</P>
<p>Usage Example:</P>
<p>dojo.dom.insertAtPosition(node, ref,
"before");//参考节点之前<br/>
dojo.dom.insertAtPosition(node, ref, "after"); //参考节点之后<br/>
dojo.dom.insertAtPosition(node, ref, "first");
//参考节点的第一个子节点<br/>
dojo.dom.insertAtPosition(node, ref, "last");
//参考节点的最后一个子节点<br/>
dojo.dom.insertAtPosition(node, ref); //默认位置为"last"</P>
<p>dojo.dom.insertAtIndex</P>
<p>将指定的节点插入到参考节点的子节点中的指定索引的位置</P>
<p>Usage Example:</P>
<p>dojo.dom.insertAtIndex(node, containingNode, 3);<br/>
//把node插入到containingNode的子节点中,使其成为第3个子节点</P>
<p>dojo.dom.textContent</P>
<p>设置或获取指定节点的文本</P>
<p>Usage Example:</P>
<p>dojo.dom.textContent(node, 'text');
//设置node的文本为'text'<br/>
dojo.dom.textContent(node); //返回node的文本</P>
<p>dojo.dom.hasParent</P>
<p>判断指定节点是否有父节点</P>
<p>Usage Example:</P>
<p>dojo.dom.hasParent(node);</P>
<p>dojo.dom.isTag</P>
<p>判断节点是否具有指定的tag</P>
<p>Usage Example:</P>
<p>var el = document.createElement("SPAN");<br/>
dojo.dom.isTag(el, "SPAN"); //will return "SPAN"<br/>
dojo.dom.isTag(el, "span"); //will return ""<br/>
dojo.dom.isTag(el, "INPUT", "SPAN", "IMG"); //will return
"SPAN"</P>
<p>
///////////////////////////////////////////////////////////////////////////////////////////</P>
</DIV>
</div>
<div id="Declare">
本文仅为提供更多信息,不代表新浪BLOG同意其观点或描述。如需转载请注明出处。 </div>
<div id="CloseButton">
<table align="right"><tr>
<td><a href="javascript:close();">
<img src="http://blogjs.sinajs.cn/images/read_mode/readModeClose.gif" width="13" height="13" border="0" alt="close" /></a></td>
<td>
<span style="text-align: right;">
<a href="javascript:close();" style="text-decoration: none; font-size: 12px;">关闭阅读模式</a>
</span>
</td>
</tr>
</table>
</div>
</div>
</div>
<script language="javascript" src="http://blogjs.sinajs.cn/js/read_mode/read_mode.js"></script>
<span name="pvcounter" pid="1" key="551fd8e701008c8g" url="http://blog.sina.com.cn/s/blog_551fd8e701008c8g.html" expara="" style="display:none"></span>
<script id="PVCOUNTER_FORIE" type="text/javascript"></script>
<script type="text/javascript" src="http://news.sina.com.cn/pvcounter/pvcounter.js"></script><img src="http://secure-cn.imrworldwide.com/cgi-bin/m?ci=cn-sina2006&cg=0" alt="" /><script type="text/javascript" src="http://sina.wrating.com/a1.js"></script>
<script type="text/javascript">
try{
var vjAcc="860010-0328010000";
var wrUrl="http://sina.wrating.com/";
vjTrack("");
}catch(e){};
</script>
<noscript><img src="http://sina.wrating.com/a.gif?a=&c=860010-0328010000" width="1" height="1"/></noscript></body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -