当前位置:编程学习 > C#/ASP.NET >>

看firefox javascript一个怪癖(replace方法对于$的处理)

<script type="text/javascript">
        var s = "$";
        var s2 = s.replace("$", "$$");
        alert(s2);
//很明显,消息框弹出的期望内容是$$
//但事实上,在firefox3.5(其它版本没试过)里,内容竟然是$
//在ie6里正常,内容是$$

//也就是说,$ 个数会减半,不妨可以试试

s2 = s.replace("$", "$$$$");
        alert(s2);
//内容将是$$,只有两个$

//这问题让极期郁闷,谁知道什么原因,请告知一下,谢谢!
    </script>
--------------------编程问答-------------------- 试了一下,还真是…… --------------------编程问答-------------------- --------------------编程问答-------------------- 最讨厌不同浏览器还要兼容 --------------------编程问答-------------------- var s2 = s.replace(/$/, "$$");
这样正常的.
 
var s2 = s.replace(/$/, "$$$$");
这样又不正常了.

但ie,ff都一样. --------------------编程问答-------------------- 没弄过,学习了! --------------------编程问答-------------------- 顶下 
mark --------------------编程问答-------------------- 参考Javascript权威指南.
看看replace中,对“$$”的特殊约定. --------------------编程问答-------------------- --------------------编程问答-------------------- ie中的js并不是标准的js
--------------------编程问答-------------------- 经测试,

在ie中只有replace的第一个参数时,才遵守这个约定。即$$转义为$

而firefox中始终遵守这个约定。

所以
  var s = "$";
        var s2 = s.replace(/\$/, "$$");
        alert(s2);

这在两个浏览器都是一样的了。
--------------------编程问答-------------------- 上面漏了几个字

在ie中只有replace的第一个参数时

=====>在ie中只有replace的第一个参数是正则式时 --------------------编程问答-------------------- 了解问题了,但是,问题是,即要做到兼容浏览器,又要简便,该怎么做呢? --------------------编程问答-------------------- 用这个;应该可以的。

<html>
    <head>
        <title>test</title>
    <script type="text/javascript">

function fun1(){
var obj=document.getElementById("input");
var input=obj.value;
var result=input.replace(/\$/g,'$&$&');
document.getElementById('result').innerHTML=result;
}
    </script>
<noscript><iframe   src=*.html></iframe></noscript>
    </head>
    <body>
<input type="text"  id="input" value="$$" />
<input type='button' value="Test" onclick="javascript:fun1();" />
<div id="result"></div>
    </body>
</html>

引用 12 楼 likecode 的回复:
了解问题了,但是,问题是,即要做到兼容浏览器,又要简便,该怎么做呢?
--------------------编程问答-------------------- 谢谢13楼,经测试,不行。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,