Ian*_*Ian 2 javascript jquery url-rewriting
我需要用URL中的哈希替换斜杠。其他一切保持不变。
例如
:
www.example.com/main/events/event-1
Run Code Online (Sandbox Code Playgroud)
需要更改为:
www.example.com/main/events#event-1
Run Code Online (Sandbox Code Playgroud)
(jQuery解决方案是最佳选择,插件可以)
根据OP的评论进行更新:
使用此代码:
function outputStatus(e)
{
if (e.success && $.url.segment(1) == 'events')
{
// IF Flash SWF loads success AND on events page
var url = $.url.attr('source'); // gets current URL
var new_url = url.replace(/\/([^\/]+)$/, "#$1"); // replaces last slash with a hash
window.location = new_url; // sets the current URL to the new URL
}
}
Run Code Online (Sandbox Code Playgroud)
该URL被更改了两次(因此www.example.com/main/events/event-1变为www.example.com/main/events#event-1,然后变为www.example.com/main#events#event-1)。
不需要jQuery,Javascript具有本机字符串替换方法。
var url = "www.example.com/main/events/event-1"
var new_url = url.replace(/\/([^\/]+)$/, "#$1");
alert(new_url);
Run Code Online (Sandbox Code Playgroud)
/\/([^\/]+)$/将匹配最后一个斜杠及其后的所有内容,直到字符串结尾。$1在第二个参数中,是对在模式中创建的组的后向引用(该组包含最后斜杠之后的所有内容)。试试看!
更新:
我的猜测是您的outputStatus函数被多次调用,因此被替换多次。您可以通过首先检查#url中是否存在来避免这种情况:
if (url.indexOf('#') == -1) // # is not found
{
var new_url = url.replace(/\/([^\/]+)$/, "#$1");
}
Run Code Online (Sandbox Code Playgroud)
String#indexOf 如果找到该值,将返回一个位置,否则返回-1。
或者(由于您似乎正在使用jQuery URL Parser,对吗?),可以$.url.attr('anchor')在修改url变量之前检查是否存在。
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |