| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1906 人关注过本帖, 1 人收藏
标题:innerHTML代码规范问题js
取消只看楼主 加入收藏
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:10 
innerHTML代码规范问题js
使用 innerHTML给文本域赋值时。。得到的代码在IE 6.0 里的是大写的字母,有些属性没有双引号


<FONT COLOR=red>字体</FONT> 不符合标准。。这个用js要怎样处理成

<font color="red">字体</font>

html代码标签都变成小定。。属性无双引号的自动加上双引号。。?


我是从HTML编辑器里获取的。
程序代码:
//将html标签到大小转换为小写并属性加双引号,IE时才调用
function ieHTML(content)
{
    var okText = content.replace(/<(\/?)(\w+)([^>]*)>/g,function(match,$1,$2,$3){
        if($1){
                return "</"+ $2.toLowerCase() +">";      
        }      
        return ("<"+ $2.toLowerCase() +$3+">").replace(/=(("[^"]*?")|('[^']*?')|([\w\-\.]+))([\s>])/g,function(match2,$1,$2,$3,$4,$5,position,all){
                if($4){
                        return '="'+ $4 +'"'+ $5;
                }
                return match2;
        })
});
    return okText.replace(/<\/?([^>]+)>/g,function(lele){return lele.toLowerCase();});
}
这个。。还不是很完善。。
有些加不上引号。小写的没问题了。

<font color=#00ffff>51js</font>

color= 这里加不上引号。。

pluginspage=http:// 加不上引号

"><embed style="width: 498px; height: 500px" pluginspage=http://www. src=http://player. width="498" height="500" type=application/x-shockwave-flash wmode="transparent" quality="high"></embed>




[ 本帖最后由 lele2007 于 2010-9-5 22:40 编辑 ]
搜索更多相关主题的帖子: 规范 代码 innerHTML 
2010-09-05 22:38
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
html=html.replace(/<\w+( [^=<>]+=[^<>]*)+\/?>/g,function(m,p1,p2){
var rg=/<(\w+)(( [^=<>]+=[^<>]*)+\/?>)/;
m='<'+m.replace(rg,'$1').toLowerCase()+m.replace(rg,'$3')+'>';
return m.replace(/([^=]+=)([^<>/]*)/g,function(m1,p3,p4){return p3+'"'+p4+'"';  });}).replace(/(<\/)([^<>/= ]+)>/g,function(m,p1,p2){return p1+p2.toLowerCase()+'>';});

请问这个有什么比较好的办法能实现?

innerHTML后,html标签加上引号。。

学习编程www.
2010-09-05 22:39
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
以下是引用aspic在2010-9-6 11:32:32的发言:

小子~又写编辑器啊
呵呵。。。之前的是前台。现在是后台。。^_^..~
上次用你的方法有效
这个innerHTML返回的信息,版主,也支个招?


学习编程www.
2010-09-06 15:12
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
以下是引用foktime在2010-9-8 15:48:36的发言:

return ("<" + $2.toLowerCase() + $3 + ">").replace(/=(("[^"]*?")|('[^']*?')|([^\s]+))([\s>])/g, function(match2, $1, $2, $3, $4, $5, position, all) {


把我叫过来都没分接了
^_^...~~


版主,我测试了代码。。在编辑器里的内容,,其它的都能正常,标签小写成功。

但是,双引号加不上。。
<font color=#0099ff>。。编程论坛</font>。
<p><embed pluginspage=http://www. src=http://player. width="600" height="500" type=application/x-shockwave-flash wmode="transparent" quality="high"></embed>

embed标签里的  pluginspage=""  双引号没有效果。。了  ~ _ ~....

学习编程www.
2010-09-08 20:00
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
大部份,双引号可以加上。。

好奇怪。。

<font color=#0099ff>。。编程论坛</font>。  这个font标签的加不上。。
flash标签的。也是一样。。

学习编程www.
2010-09-08 20:02
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
前台编辑器。。
前台编辑器.rar (1.13 MB)


预览图片:
图片附件: 游客没有浏览图片的权限,请 登录注册


---------------------------------我是谁?我是分割线---------------------------------

后台编辑器..
后台编辑器.rar (33.4 KB)


预览图:
图片附件: 游客没有浏览图片的权限,请 登录注册

学习编程www.
2010-09-08 20:41
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
以下是引用foktime在2010-9-9 08:33:20的发言:

怎么会没效果呢  正则已经没有问题了啊  给你下面代码你测试一下。
 
    alert(ieHTML(''));
    alert(ieHTML('。。编程论坛'));
function ieHTML(content)
{
    var okText = content.replace(/<(\/?)(\w+)([^>]*)>/g,function(match,$1,$2,$3){
        if($1){
                return "";      
        }
        return ("<" + $2.toLowerCase() + $3 + ">").replace(/=(("[^"]*?")|('[^']*?')|([^\s]+))([\s>])/g, function(match2, $1, $2, $3, $4, $5, position, all) {
                if($4){
                        return '="'+ $4 +'"'+ $5;
                }
                return match2;
        })
});
 
return okText.replace(/<\/?([^>]+)(?=\=)>/g, function(lele) { return lele.toLowerCase(); });
}仔细检查检查看别的地方是不是有问题
可以了.xixi...
直接复制这段代码覆盖之前的。有效果了。
对比了代码,是一样的。不同的是我写代码时格式用的是C#的风格。。
if($1)
{
    ......
}

谢谢。。。

学习编程www.
2010-09-09 09:33
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
嗯。。。

用这个估计是比较好的。return okText.replace(/<\/?([^>]+)(?=\=)>/g, function(lele) { return lele.toLowerCase(); });

有些CSS是大写的名字。 :

.LELE{color:red;}

不保留,会变成:<div class="lele">内容</div>  这样引用应该就会失效了。

最后改成了这样:
程序代码:
function ieHTML(content)
{
    //var okText = content.replace(/<(\/?)(\w+)([^>]*)>/g,function(match,$1,$2,$3){
      return content.replace(/<(\/?)(\w+)([^>]*)>/g,function(match,$1,$2,$3){
        if($1){
                return "</"+ $2.toLowerCase() +">";    

        }
        return ("<" + $2.toLowerCase() + $3 + ">").replace(/=(("[^"]*?")|('[^']*?')|([^\s]+))([\s>])/g,function(match2,$1,$2,$3,$4,$5, position,all) {
                if($4){
                        return '="'+ $4 +'"'+ $5;
                }
                return match2;
        })
});
    //return okText.replace(/<\/?([^>]+)>/g,function(lele){return lele.toLowerCase();});
    //return okText.replace(/<\/?([^>]+)(?=\=)>/g, function(lele) { return lele.toLowerCase(); });
}
上面的也成功的保留了原属性格式。。双引号也可以了。。^_^..
 

学习编程www.
2010-09-09 11:03
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
基本上处理了ie的innerHTML

还有另一个问题。。

<div class="LELE" style="margin: 20px; color: #FFF025">编程论坛</div>

这段代码中。。保留了LELE  为大写。。
style里的css margin:20PX;color:#FFF025;  会返回:MARGIN: 20px; COLOR: #fff025  

margin返回大写。。color  变成了大写
#FFF025  颜色返回了小写。  style行内样式的,还是有这个问题

[ 本帖最后由 lele2007 于 2010-9-9 11:15 编辑 ]

学习编程www.
2010-09-09 11:12
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
收藏
得分:0 
买嘎。。。

程序代码:
//将html标签到大小转换为小写并属性加双引号,IE时才调用
function ieHTML(content)
{
      var okText = content.replace(/<(\/?)(\w+)([^>]*)>/g,function(match,$1,$2,$3){
        if($1){
                return "</"+ $2.toLowerCase() +">";    

        }
        return ("<" + $2.toLowerCase() + $3 + ">").replace(/=(("[^"]*?")|('[^']*?')|([^\s]+))([\s>])/g,function(match2,$1,$2,$3,$4,$5, position,all) {
                if($4){
                        return '="'+ $4 +'"'+ $5;
                }
                return match2;
        })
});
    return okText.replace(/(\s)style=".*:/g,function(lele){return lele.toLowerCase();});   

}
这样实现了。。
受益匪浅。。foktime ^_^..谢谢。

[ 本帖最后由 lele2007 于 2010-9-9 16:11 编辑 ]

学习编程www.
2010-09-09 16:00
快速回复:innerHTML代码规范问题js
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028792 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved