如何在Firefox中使用javascript正则表达式替换href?
我尝试使用以下用于Rails上jQuery的代码更改网页上的一些链接如何在Firefox中使用javascript正则表达式替换href?,javascript,jquery,ruby-on-rails,regex,cross-browser,Javascript,Jquery,Ruby On Rails,Regex,Cross Browser,我尝试使用以下用于Rails上jQuery的代码更改网页上的一些链接 $(function () { $('#lesson a').live('click', function () { $.getScript(this.href.replace(/^(http...[^\/]+)?\/+(.*)$/,'/ajax/\\$2')); return false; }); }) 这个技巧适用于Chrome和Safari,但在Firefox和Opera中失败(点击时不会发生任
$(function () {
$('#lesson a').live('click', function () {
$.getScript(this.href.replace(/^(http...[^\/]+)?\/+(.*)$/,'/ajax/\\$2'));
return false;
});
})
这个技巧适用于Chrome和Safari,但在Firefox和Opera中失败(点击时不会发生任何事情)。代码可能有什么问题
编辑1:
该网页包括:
<div id="lesson">
<a href="/subj1">Subject 1</a>
...
</div>
...
单击后,浏览器(即Firefox和Opera)应发出一个ajax请求
/ajax/subf1
您将字符串替换为'/ajax/\\$2'
您有一个额外的反斜杠-如果您希望得到结果
/ajax/subc1
,请使用'/ajax/$2'
您也可以包含示例HTML页面的源代码吗?@orangepips,刚刚完成了。请看更新的问题。它以什么方式失败?您会收到哪些错误?您应该函数(e){e.preventDefault();/*您的代码*/}
@lonesomeday,而不是返回false,单击后不会发生任何事情谢谢!我误解了如何在javascript中引用正则表达式部分。有趣的是,它适用于某些浏览器。@Andrei-没问题!有时你写了一些东西,然后被它蒙蔽了双眼——即使它就在你面前:)
。有些浏览器非常宽容——它们纠正URL甚至html,假设用户输入错误。例如,http:/google.com将在大多数浏览器中工作,即使它不是有效的url。IE自动将\
更正为/
(或者至少在7年前这样做了-从那时起就没有检查过),并可能将/
折叠为/
,给出正确的结果。