如何解决jQuery的:更改URL地址而不重定向? [重复]
| 这个问题已经在这里有了答案:解决方法
注意:现在支持“ 0”-查看其他答案。
您不能在不重定向的情况下更改整个url,而是可以更改哈希值。
哈希是网址中#符号后面的部分。最初的目的是将您(本地)定向到HTML文档的各个部分,但是您可以通过javascript读取和修改它,以使其像全局变量一样使用。
如果应用得当,此技术可通过两种方式使用:
浏览器历史记录将记住您执行的每个不同步骤(因为url + hash更改了)
您可以有一个地址,该地址不仅可以链接到特定的html文档,还可以为您的javascript提供有关操作的线索。这意味着您最终指向了Web应用程序内的状态。
要更改哈希,您可以执行以下操作:
document.location.hash = \"show_picture\";
要观察哈希更改,您必须执行以下操作:
window.onhashchange = function(){
var what_to_do = document.location.hash;
if (what_to_do==\"#show_picture\")
show_picture();
}
当然,哈希只是一个字符串,因此您可以使用它做几乎所有的事情。例如,如果您使用JSON对其进行字符串化,则可以将整个对象放在其中。
有非常好的JQuery库可以执行高级操作。
, 看到这里-http://my.opera.com/community/forums/topic.dml?id=1319992&t=1331393279&page=1#comment11751402
实质上:
history.pushState(\'data\',\'\',\'http://your-domain/path\');
您可以操纵历史对象来完成这项工作。
它仅适用于同一域,但是由于您对使用井号标签方法感到满意,因此这无关紧要。
显然需要进行跨浏览器测试,但是由于已在Opera论坛上发布,因此我可以确定它可以在Opera中运行,并且我刚刚在Chrome中对其进行了测试,并且效果很好。
, 该站点使用URL的“片段”部分:“#”之后的内容。浏览器不会将它作为GET请求的一部分发送到服务器,但可以用于存储页面状态。因此,是的,您可以更改片段而不会导致页面刷新或重新加载。页面加载时,您的JavaScript会读取此片段并适当地更新页面内容,并根据需要通过Ajax请求从服务器获取数据。要读取js中的片段:
var fragment = location.hash;
但请注意,此值的开头将包含\“#\”字符。设置片段:
location.hash = \"your_state_data\";
, 您无法做到所要求的(链接的网站也无法做到这一点)。
但是,您可以修改#
符号后的url部分,称为片段,如下所示:
window.location.hash = \'something\';
片段不会发送到服务器(例如,Google本身无法区分http://www.google.com/
和http://www.google.com/#something
之间的区别),但是可以用页面上的Javascript读取。反过来,此Javascript可以根据片段的值来决定执行不同的AJAX请求,这是您链接到的网站可能执行的方式。
, 这是通过URL重写而不是通过URL混淆来实现的,这是无法做到的。
如前所述,另一种方法是通过更改主题标签
window.location.hash = \"/2131/\"
, 不,因为那将打开网络钓鱼的闸门。您可以更改的URI的唯一部分是片段(“ 6”之后的所有内容)。您可以通过设定window.location.hash
来实现。
, 如果不进行重定向,就无法真正更改位置栏中的整个URL(请考虑安全问题!)。
但是,您可以更改hash
部分(在#
之后),并显示为:location.hash
ps。通过以下方式防止默认的“ 16”链接重定向:
$(\"#link\").bind(\"click\",function(e){
doRedirectFunction();
e.preventDefault();
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。