iframe 的name可以是link或者form的target,将link或form打开到这个iframe上。
之前在IE遇到过设置不了iframe的name属性
JavaScript代码
- var iframe = document.createElement('iframe');
- iframe.name = 'ifr';
-
上面两种方式都无法设置。后来找到原来也可以这样创建
JavaScript代码
- var iframe = document.createElement('<iframe name="ifr"></iframe>');
这样在IE中就没问题了,但这种方式在firefox中是无办法通过的。所以最后
JavaScript代码
- try{
- var iframe = document.createElement('<iframe name="ifr"></iframe>');
- ...
举个例子说明下
JavaScript代码
- <script type="text/javascript">
- var pic = thumb = new Array();
- for(var i=0; i<2; i++){
- pic[pic.length] = i;
- thumb[thumb.length] = i;
- }
- </script>
这样赋值后原以为 pic和thumb的值都是 [0, 1]。其实不然,它们两个的值都是[0, 0, 1, 1].
原因是这种复制方式引起的 var pic = thumb = new Array(); js数组是引用传递的。
但如果是字符串,这样:var pic = thumb = ''; 又不会有这个问题。
数组改成这种方式就没有问题了
var pic = new Array(), thumb = new Array();
Dean Edwards 的php版的 JavaScript Packer 是一个非常好用的JavaScript压缩工具。支持几个级别的压缩。不过我用来压缩一些程序后发现跑不起来,未压缩前语法的没问题的,而且换行结束的地方都有分好。压缩后反而语法有错。于是找了一下原因终于发现,原来是一正则出了问题。打开
class.JavaScriptPacker.php
查找
PHP代码
- $parser->add('/;+\\s*([};])/', '$2');
注释掉此行,即改成:
为什么这个会出错呢?举个例子说明一下
JavaScript代码
- function aa(){
- for(var i=0; i<4; bb(i++));
- }
不注释那一句的话压缩后变成
JavaScript代码
- function aa(){for(var i=0; i<4; bb(i++))}
没有逗号自然就语法出错了。
htmlarea编辑器速度还是挺快的,我比较喜欢用。但htmlarea编辑器的redo 和 undo 在ie下一点反应也没有,但在firefox下正常。原来是ie下默认是关闭了undo功能的。打开htmlarea.js,查找
JavaScript代码
- this._customUndo = false;
改成
JavaScript代码
- this._customUndo = true;
redo,undo就可以用了。
另外如果出现 'HTMLArea.I18N.tooltips' is null or not an object 的错误。则lang下的语言包问题。而且这个错误很无厘头。后来我直接用json_encode把中文全部转成类似于这样的形式 \u9760\u5de6 就好了。
在IE下可以直接用window.event。但FireFox并没有 window.event 。如果要得到 event 对象,就必须要声明时间处理函数的一个参数为 event 。
JavaScript代码
- <script type="text/javascript">
- function fun1(e){
- var ev = window.event || e;
- alert(ev);
- }
- </script>
-
- <input type="button" id="bt" value="Click me" onclick="fun1(event);" />
这个例子在ie和Firefox都是可以通过的。
但我们用到addEventListener来绑定事件又如何传递event呢。按照上面的方法
JavaScript代码
- <script type="text/javascript">
- funct...
做下载后台的时候,做一个可以添加多个链接的功能。就是只要点击添加就会增加一个链接的输入框。这个功能是比较常用的,比如添加更多附件等等。做法是每次克隆一个tr,然后appendChild到table中。一开始死活没有效果,以为是语法有错。后来查看才知道,table无论有没有tbody,用appendChild都会生成tbody标签。appendChild到table的话,新增加的tr就会在</tbody>和</table>之间。
XML/HTML代码
- <TABLE id=link_tb cellSpacing=0 cellPadding=0 width="100%" border=0>
- <TBODY>
- <TR id=link_tr>
- <TD>URL: <INPUT size=55 name=link[url][]> <A style="DISPLAY: none" href="javascript:void(null);">删除&l...