Oct 31 2007

Firefox下提示“Node cannot be inserted at the specified point in the hierarchy”的问题

Posted by neio

Tags: , , ,

Node cannot be inserted at the specified point in the hierarchy” code: “3

出现这个问题是因为要被插入的元素不可插入。

在Firefox下,即使一个换行符号”\n”,都会被解析成DOM的一部分,使之成为一个文本域。而这个文本是不允许插入子节点的。而在IE下,就会忽略这些无意义的换行符等。

顺带提一下,我们通常都说Firefox更接近W3C标准,可偏偏在有些问题上,IE做的比Firefox好。Firefox对规范过于宽松的解释,很容易造成不必要的麻烦和错误,很多时候比不支持规范有过之无不及。

再举个例子:

<div name=”e1″>

<ul name=”e2″>

<li>op1</li>

<li name=”e3″></li>

</ul>

</div>

<a href=”#” name=”e4″>AA</a>

<form name=”e5″>

<input name=”e6″ type=”text”/>

</form>

使用一下Javascript来取值:

l = " ";

for(var i =1;i<7 ;i++){

l += document.getElementsByName("e"+i)[0].tagName + "  ";

}

alert(l);

那么在Firefox下将得到

div ul li a form input

而在IE下得到

a form input

因为DIV,UL,LI,P标记都不支持name属性,所以这里IE的做法是正确的。

Filed under : Essay Pro, 汉语 | No Comments »
Sep 27 2007

浏览器打印

Posted by neio

Tags: , , , ,

–Neio

@media print
{
.Noprint { DISPLAY: none;}
}

在浏览器打印的时候,想要隐藏某些元素,如上设置CSS即可。

例如 :

<input class=”Noprint” value=”不打印” type=”button”></input>

这个按钮就不会被打印了

Filed under : Worklog, 汉语 | No Comments »
Aug 05 2007

ExternalInterface.addCallback 在IE下的Form的冲突

Posted by neio

调试的时候直觉一直很灵,这次也没错。

可惜昨天调试这么奇怪,已经走到确认是IE下的form 和ExternalInterface.addCallback的冲突了,可惜不知道什么原因失败,让我以为是直觉错了.

让我调试了那么久 把所有Actionscript 2.0 的代码全部改写成 ActionScript 3.0的代码.. 我容易吗?! 气死..

话题回归啊…

ExternalInterface.addCallback在IE下自动生成代码的时候,如果Flash那个Object 是在Form这个标签下,那么就会产生错误(有的情况下可能工作正常?!有待考证!!),原因是那个Flash对象的ID找不到了。

解决的方法呢.. 暂时只有:把那个Flash从Form里面移出来。

–Neio Oct.1 2007

最近发现是IE下要使用Object, Firefox下使用Embed,这样才能正确找到Flash对象,即通过ID来找到Flash对象。

Filed under : Worklog, 汉语 | 1 Comment »
Jul 20 2007

IE中PHP + Smarty + UTF-8字符编码造成CSS的混乱

Posted by neio

Tags: , , , ,

[for web developers]今天在用 PHP + Smarty 写动态网页的时候发现,UTF-8的Unicode签名BOM (即十六进制中的 “EF BB BF “)会影响CSS,IE 6和 IE 7 都会受影响。

例如 margin: 0px auto; 的样式就会受到影响。

进一步还发现,开头只有一个BOM 的时候显示还是正常,一旦多于1个这样的字符串的时候样式就会混乱。

所以,平时如果不用Smarty的话,用PHP 即使输出了 BOM 十六进制流, 也不会对CSS造成任何影响,然而用 PHP + Smarty + UTF-8字符编码的时候,因为出现了不止一个的 BOM 流,就出现了混乱了。

解决办法是将所有的 PHP,HTML模版前面的BOM去掉就行。

如果不知道怎么做,我这里可以提供一个方法: EmEditor 打开那个文件,另存为的时候,将BOM框去掉选择,再保存就行。

或者用十六进制编辑器 比如HEdit , UE等,直接把前面三个自己删除就行。

名词解释:

A Byte Order Mark (BOM) is the character at code point U+FEFF (”zero-width no-break space”), when that character is used to denote the endianness of a string of UCS/Unicode characters encoded in UTF-16 or UTF-32 and/or as a marker to indicate that text is encoded in UTF-8, UTF-16 or UTF-32. [link]

Filed under : Worklog, 汉语 | No Comments »