我正在尝试从window.location 中提取哈希子字符串值并将其写入HTML以供用户查看,其URL语法禁止使用?
作为查询字符串分隔符。
好的,所以我有这个很棒的代码示例,感谢@Gabe:
<html>
<input type="button" id="test" value="Test" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
$(function() {
$('#test').click(function() {
window.location = (window.location);
GetURLParameter('source');
});
});
function GetURLParameter(sParam) {
var sPageURL = window.location.hash.substring(1);
console.log(sPageURL);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
alert(sParameterName[1]);
return sParameterName[1];
}
}
}
</script>
</html>
我为他的例子制作了一个modifcatin,所以我们使用来自客户端的实际窗口位置::
window.location = (window.location);
当我点击包含上述代码的页面上的“测试”提交按钮时(URL形成如下):
http://example.com/pagename.html#source=FOO&medium=BAR&campaign=FRED
(注意没有?
作为查询字符串分隔符,只有#
)
...然后我得到一个成功的警报,显示来自URL的来源“FOO”。真棒。
但是如何获取其他两个SParamaterNames ,然后如何将它们作为HTML 写入页面而不是返回警报。
我知道这对你们来说是一个基本问题。我在这里,因为我已经试图解决这个问题好几天了,看看很多差异解决方案。任何帮助是极大的赞赏!!非常感谢所有巫师。
答案 0 :(得分:3)
从hash
search
location
值而不是object
值
Here是一个有效的例子。
function GetURLParameter(sParam)
{
var sPageURL = window.location.hash.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}