您的位置:首页 > 其它

htc文件GB2312编码格式导致包含中文的注释行混乱,不易发现(原创)

2006-06-12 14:47 288 查看
今天,在htc文件应用一段简单的dhtml时,竟然出现了错误,看一下


var _table = window.document.createElement("TABLE");
window.document.body.appendChild(_table);
_table.cellSpacing = 0;
_table.cellPadding = 0;
_table.className = "Main";
var _tr = _table.insertRow();
_tr.style.background='beige url(images/top_middle.gif) repeat-x';
var _td = _tr.insertCell();
_td.style.width = 8;
_td.style.height = 8;
_td.innerHTML = '<IMG SRC="images/top_left.gif" WIDTH="8" HEIGHT="8" BORDER=0>';
//_td = _tr.insertCell(); //第二列
_tr = _table.insertRow(); //第二行
_tr.vAlign = "top";
_td = _tr.insertCell();
_td.className = "MainTableLeft";
_td.colSpan = 2;
_td.appendChild(element);
alert(_table.rows.length);



可是_table.rows.length的结果总是1而不是期望的2,而这段代码在jscript中运行正常。经过反复的试验,最终发现问题出在htc的编码上。



Tips:在VS.net中更改htc编码


打开htc文件,选择另存为,在弹出的对话框中的保存按钮旁边有一个小的下拉箭头,选择utf-8保存。


当我更改了编码格式后,问题消失了。我的代码中只有两行有注释


//_td = _tr.insertCell(); //第二列
_tr = _table.insertRow(); //第二行




问题就出在这里,当编码格式为GB2312,由于解析器不能正确的解析中文字符,解析的结果类似:


//第二列_tr = _table.insertRow();

//第二行.....



因此第二个insertRow()并没有执行,问题解决。

总结:


1.htc文件一定注意其编码格式,有的问题可能是因为编码问题造成的。



P.S. 罗本就是牛X,偶已经把桌面换成他的了,我的技术一般,速度还可以,罗本就是我的偶像拉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: