Category: w3c

解决javascript无法使用submit方法提交表单问题

之前在使用javascript处理一个form的时候,发现无法使用submit方法来提交表单,firebug提示方法submit不存在.最后发现,form中提交的input设定了name=”submit”的属性,删除后问题解决.

由于input的name属性存在,导致document.form.submit被错误定位到input元素上,造成错误.

Tags: , ,

Wednesday, June 11th, 2008 w3c 4 Comments

兼容XMLHttpRequest实例化函数.

function getXmlHttp(){
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlhttp = null;
}
}
if (xmlhttp==null && typeof XMLHttpRequest!="undefined"){
try
{
xmlhttp=new XMLHttpRequest();
xmlhttp.overrideMimeType('text/xml');
}catch(e){
xmlhttp=false;
}
}
return xmlhttp;
}

以上函数是我最近一次实例XMLHttpRequest的方法.

早先进行实例的时候,是先处理支持XMLHttpRequest类的标准浏览器,再处理IE这种使用ActiveX实现XMLHttpRequest.

但是前几天发现,似乎IE7已经开始支持XMLHttpRequest,但是使用工程中有发现有点问题,就有改了一下,使用上面这个函数来获取XMLHttpRequest支持.

Tags: , , ,

Friday, May 30th, 2008 w3c 3 Comments

IE6页面元素边框问题.

IE6对CSS的支持差是众人皆知的.下面又是一个案例.

当一个未设定高度的元素内部的子元素使用float的属性浮动之后,该元素的侧边框将无法完整显示.例如:
<div id="parent" style="border: 1px solid #000;">
<div style="float: left;">
Inner Content
Inner Content
Inner Content
Inner Content
Inner Content
<div>
<div>

此时,id为parent的元素,侧边框在IE6中可能无法完整显示.

解决的方法,其实也很简单,可以通过添加一条css属性,_height: 1px;(注意属性前面的下划线!)
<div id="parent" style="border: 1px solid #000;_height: 1px;">
<div style="float: left;">
Inner Content
Inner Content
Inner Content
Inner Content
Inner Content
<div>
<div>

其实这个方法又是利用了IE6的DIV盒模型的另外一个bug实现的.IE6在子元素高度超过父元素css内定义的高度是,css内对高度的定义便会失效.而在属性前面添加下划线的作用是一个css hack,属性前带下划线使该属性只能被IE6识别,IE7及以上版本,Firefox,Opera,Safari等都不能识别.

解决该问题的另一办法是给父元素也添加上float属性,但是该做法可能破坏页面的整体布局.

Tags: , ,

Thursday, May 8th, 2008 w3c 1 Comment

Definition Ajax

定义Ajax

Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:
# 基于XHTML和CSS标准的表示;
# 使用Document Object Model进行动态显示和交互;
# 使用XMLHttpRequest与服务器进行异步通信;
# 使用JavaScript绑定一切。

  这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。

Ajax的工作原理

Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

  在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
# 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
# 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
# 消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
# 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。

Tags: , ,

Tuesday, June 19th, 2007 IT, w3c No Comments