HTML中不支持静态Expando的元素的问题


Posted in Javascript onMarch 08, 2007

在使用脚本统一处理一批页面的时候,我希望通过被处理页面的TITLE元素取到文档的标题和我自定义的一些属性。这些附加的属性是我在服务器端通过Attributes集合添加的,可是运行的结果和我的期望老是相去甚远,怎么我在TITLE元素里写入的自定义属性老是空值呢?

    客服端和服务器端代码分别是:

    ASPX:
<title id="title" runat="server">Query Info</title>
    C#:  protected HtmlGenericControl title;

private void Page_Load(object sender, System.EventArgs e)
{
    // ...
    title.InnerHtml = "查询信息";
    title.Attributes["icon"] = "QueryInfo.gif;
}
    HTML:
<title id="title" icon="QueryInfo.gif">查询信息</title>
    JavaScript:
var iconPath = docucment.all.tags('TITLE')[0].icon;
if ( iconPath )
{
    var img = document.createElement('IMG');
    img.src = iconPath;
    // ...
}

    结果就是总出不来我希望的那个icon,跟踪JavaScript代码,发现iconPath总是undefined。在看看HTML代码,里面明明有icon="QueryInfo.gif"这个属性值对。于是从title对象中去查看outerHTML,outerHTML居然是:<title id="title">查询信息</title>。根本没有icon那个属性,难怪JavaScript取到的iconPath总是undefined的说。

    仔细查下去,发现原来是html元素在处理expando属性上有区别。我们给html元素添加expando属性有两种方式,一是我们常用的动态方式;就是使用脚本来给html元素添加expando属性。二是使用静态方式;即在html代码中以literal方式添加expando属性。分别举例如下:

    动态添加expando属性: <span id=mySpan>this is a span element.</span>
<script language=javascript>
mySpan.myAttri = 'attribute';
</script>
    静态添加expando属性: <span id=mySpan myAttri=attribute>this is a span element.</span>
    本来这两种写法基本是没有什么区别的,可是元素title却只支持动态添加expando属性,而不支持静态添加expando属性,这也就是为什么我开始会出错误的原因。那么还有那些html elements和title一样不支持静态添加expando属性呢?在108个html elements中,以下10个元素都不支持静态添加expando属性:
HTML, HEAD, TITLE, BODY, BASEFONT, FORM, HR, HR, TBODY, SCRIPT
    不过动态添加expando属性,是所有的html elements和dhtml objects都支持的。

Javascript 相关文章推荐
学习jquery之一
Apr 27 Javascript
JQuery拖拽元素改变大小尺寸实现代码
Dec 10 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
Sep 19 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
简单的三步vuex入门
May 20 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
使用TextRange获取输入框中光标的位置的代码
Mar 08 #Javascript
获取JavaScript用户自定义类的类名称的代码
Mar 08 #Javascript
JScript内置对象Array中元素的删除方法
Mar 08 #Javascript
在JavaScript中遭遇级联表达式陷阱
Mar 08 #Javascript
原型方法的不同写法居然会影响调试的解决方法
Mar 08 #Javascript
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
Mar 08 #Javascript
JS类库Bindows1.3中的内存释放方式分析
Mar 08 #Javascript
You might like
用PHP生成静态HTML速度快类库
2007/03/18 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php文件上传的简单实例
2013/10/19 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
jquery弹出层类代码分享
2013/12/27 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
Python 文件操作实现代码
2009/10/07 Python
Python计算回文数的方法
2015/03/11 Python
python自定义异常实例详解
2017/07/11 Python
机器学习实战之knn算法pandas
2019/06/22 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
工厂车间标语
2014/06/19 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
第二次离婚起诉书
2015/05/18 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL
nginx lua 操作 mysql
2022/05/15 Servers