看firefox javascript一个怪癖(replace方法对于$的处理)
<script type="text/javascript">--------------------编程问答-------------------- 试了一下,还真是…… --------------------编程问答-------------------- --------------------编程问答-------------------- 最讨厌不同浏览器还要兼容 --------------------编程问答-------------------- var s2 = s.replace(/$/, "$$");
var s = "$";
var s2 = s.replace("$", "$$");
alert(s2);
//很明显,消息框弹出的期望内容是$$
//但事实上,在firefox3.5(其它版本没试过)里,内容竟然是$
//在ie6里正常,内容是$$
//也就是说,$ 个数会减半,不妨可以试试
s2 = s.replace("$", "$$$$");
alert(s2);
//内容将是$$,只有两个$
//这问题让极期郁闷,谁知道什么原因,请告知一下,谢谢!
</script>
这样正常的.
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>
--------------------编程问答-------------------- 谢谢13楼,经测试,不行。
补充:.NET技术 , ASP.NET