百度空间 | 百度首页 
 
查看文章
 
正则表达式处理FireFox页面的超链接
2009-02-17 13:28

我的目的是处理一段自定义的标签;

如下

<div id="newsColumns" type="columns" parentId="0" runat="song">
<div type="itemtemplate"> <a href="{%= [@Nc_IsOut]==true ? '[@Nc_OutUrl]' : 'list.html?id='+[@Nc_Id] %}"   title="[@ Nc_Tootip]" target="{%= [@Nc_IsOut]==true ? '_blank' : '_self' %}">[@Nc_Name ]</a> </div>
</div>

上面的[@Nc_Name]之类,是自定义的属性标签,我用javascript获取这些标签,然后用ajax去请求webservice,将取到的结果替换成实标的文本,显示到页面上。

这个想法很好,也没有什么技术障碍,很快就实现了。包括标签之间的简单运算(即标签表达式)。如上面的
"{%= [@Nc_IsOut]==true ? '[@Nc_OutUrl]' : 'list.html?id='+[@Nc_Id] %}

意思是如果Nc_IsOut为true(即为外部链接时),返回Nc_OutUrl(即外部的超链接地址),否则显示本地文件,并传递id过去。

在IE下测试完全正确,Google浏览器下也完全正确,但是在FireFox下有问题,无法解决标签表达式;我想也不是大问题,因为正则表达式本来在各浏览器兼容性有些问题,修正一下就行了。

检测自己的代码,创建正则时,一向是var regExpr=new RegExp(/\{%=(.[^\}]*)%\}/gi);之类的,这样创建是不会有兼容性问题的。我郁闷了。

在做了无数次测试后,终于发现…………

超链接属性herf后面的代码,被Firefox自动处理成了url编码,而ie与google浏览器都不会这样做;找到原因就好解决了,unescape(str)预处理一下,就OK了。

我汗,一个小问题,白白浪费我近两个小时的时间,写个备忘,以免再犯。


类别:Javascript | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu