将URL的一部分重写为链接

时间:2010-12-20 11:41:21

标签: javascript html

我正在尝试将URL的一部分插入另一部分。

地址栏中的网址将显示为domain.com/test.php?/12345,然后页面中的链接必须成为domain.com/do/Login/12345(此结束编号将针对每个用户进行更改)

(请注意,我无法更改网址domain.com/test.php?/12345,因为网站所有者已经设置了此网址。)

对于上面的网址,我必须删除http://www。因为新用户无法提交多个链接以防止垃圾邮件。最终的脚本应包括http://www

你将能够看到我需要得到的是最后的数字,即12345,但我不太确定如何实现这个(javascript初学者)。这就是我到目前为止所做的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Path test</title>
</head>

<body>

<script>
// get URL eg http://www.domain.com/test.php?/12345
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
</script>

<script>
//write new domain then add user number ie 12345
document.write('http://www.domain.com/do/Login/' + window.location.pathname);
</script>
</body>
</html>

这显然不起作用,但显示我到达的位置。

我使用我在http://www.sitepoint.com/forums/showthread.php?t=244955找到的脚本运气不错,但它只适用于扩展名为.html,.php等的文件名。

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

首先,您需要在问号后面获取网址的一部分。

中提供了这个功能
 window.location.search

变量。请注意,它已包含“/”。然后,您需要创建实际链接。 document.write('http:// ...)将不起作用,因为它只会以文本形式写入,并且不会是实际的锚标记。为此你需要像:

document.getElementById("yourLink").href = "http://domain.com/do/Login" + window.location.search

不要忘记在html中放置一个锚标记,其id与上面的getElementById()方法中的元素匹配。如果您不想在html标记中放置锚标记,可以使用javascript创建一个锚标记:

var link = document.createElement('a');
link.href = "http://domain.com/do/Login" + window.location.search;
document.body.appendChild(link);

这可能需要进一步调整您的需求。

答案 1 :(得分:0)

这可以做到吗?它使用整个URL,将其从'?'中分离出来(意思是从参数的开头),然后将参数连接到基本URL。

var oldUrl = window.location.href;
var parameters = oldUrl.substring(oldUrl.indexOf('?',0),oldUrl.length);

var newUrlBase = 'http://www.domain.com/do/Login/';
var newUrl = newUrlBase + parameters;