编写兼容IE和FireFox的脚本_javascript技巧
- WBOYOriginal
- 2016-05-16 18:52:44998Durchsuche
一、正式表达式问题
试图用以下表达式提取中括号“]”后面的内容,连接调用以下代码在IE下正常,FireFox则总是会用单数行的内容替代双数行的内容。
(/(\])([^ -}]*)/ig).exec(srcText);
newtext = "[部门]" + RegExp.$2;
后证实问题出在“ig”的“g”上,FireFox把RegExp当全局变量来处理,且没有及时更新$2,这种问题实在莫名其妙。
二、移除Select的条目
IE支持select.options.remove(index),FireFox却是select.remove(index),兼容的方法是select.options[i] = null;
三、showModalDialog
FireFox可以showModalDialog的了,不过如果showModalDialog出来的页面套了个frame,frame的页面取window.dialogArguments可以成功,FireFox不行,要用window.parent.dialogArguments来取。
四、childNodes
FF没有children,要兼容用childNodes,但IE和FF解释不一致,FF将空白文本、换行当成节点,为避免childNodes(index)取得的节点正确,HTML标识间不要有空格或换行 。
五、removeChild
FF中不能和node.removeNode(true),改为node.parentNode.removeChild(node)。
六、outerHTML
FF没有node.outerHTML,在调用node.parentNode.innerHTML来特别处理,若只是添加事件响应或设属性值,可直接element.onclick = function(){callxxx(x,y);}
七、script域问题
此问题原因不详,FF用调用外部JS,在内部script中调用lib.js中的函数时,报告函数未定义,IE则无此问题。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn