我用<a>
标签包装所有URL,但由于我开发应用程序风格的网站,我需要用特定属性替换所有内部URL。
所以这个:
href="http://domain.com/page/details"
应该成为
data-bind="page: '/page/details'"
问题是,仅仅替换开头是不够的,因为链接本身应该用引号包装,以便以后进行javascript处理。此外,我想介绍www.domain.com
和domain.com
等情况
更新
这是最简单的。我不是要求一个url检测正则表达式,我已经涵盖了所有这些。
我所需要的只是将href的前面部分更改为与当前域匹配的url,如我在示例中所示,然后用单引号将url的其余部分括起来。
我知道如何简单地将替换前部分href="http://domain.com
更改为data-bind="page:
,但我如何用单引号包装其余的url /page/details
,或者换句话说,直到第一个双引号之前的所有文本。
这样的东西怎么样:
var newString = string.replace(/href="http://domain.com(/[^"]*)"/g, "data-bind="page: '$1'"");
与其更改链接,不如让链接处理程序更智能。
保留您的链接:
<a href="http://example.com/path/to/thing">what</a>
但更改他们的点击处理程序:
$('a').click(function() {
url = $(this).get(0).pathname;
console.log(url); // outputs "/path/to/thing"
if (on the app page) {
// do stuff
return false;
}
else {
// on the browser page
}
});
如果禁用javascript,这还有一个额外的好处,那就是可以优雅地后退。