开发者

JavaScript To Strip Page For URL

We have a javascript function we use to track page stats internally. However, the URLs it reports many times include the page numbers for search results pages which we would rather not be reported. The pages that are reports are of the form:

http://www.test.com/directory1/2
http://www.test.com/directory1/subdirectory1/15
http://www.test.com/directory3/1113

Instead we'd like the above reported as:

http://www.test.com/directory1
http://www.test.com/directory1/subdirectory1
http://www.test.com/directory3

Please note that the numbered 'directory' and 'subdirectory' names above are just for example purposes and that the actual subdirectory names are all different, don't necessa开发者_开发技巧rily include numbers at the end of the directory name, and can be many levels deep.

Currently our JavaScript function produces these URLs using the code:

var page = location.hostname+document.location.pathname;

I believe we need to use the JavaScript replace function in combination with some regex but I'm at a complete loss as to what that would look like. Any help would be much appreciated!

Thanks in advance!


I think you want this:

var page = location.href.substring(0,location.href.lastIndexOf("/"));


You can use a regex for this:

document.location.pathname.replace(/\/\d+$/, "");

Unlike substring and lastIndexOf solutions, this will strip off the end of the path if it consists of digits only.


What you can do is find the last index of "/" and then use the substring function.


Not sure you need a regex if you're just pulling off the last slash + content.

http://www.w3schools.com/jsref/jsref_lastIndexOf.asp

I'd probably use that to search for the last "/" character, then do a substring from the start of the string to that index.


How about this:

var page = location.split("/");
page.pop();
page = page.join("/");


I would think you need to use the .htaccess with rewrite rules to change the look of the url, however I am still looking to see if this is available to javascript. Will repost when I find out more

EDIT*

the lastIndexOf would only give you the position, therefor you would still need to replace. ex:

var temp = page.substring(page.lastIndexOf("/"),page.length-1);

page = page.replace(temp, "");

unfortunately I'm not that advanced in my coding so there is probably more efficient coding in the other answers. Sorry for any inconveniences with my initial answer.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜