Javascript 重写URL哈希以获取变量
我在一个有动态内容的网站上工作 单击文章时,它将使用推送状态更改为地址 例如: -单击新闻项目之前 -点击新闻项目后 但是由于pushstate在IE或更老的浏览器中不起作用,我将其重写为使用jQuery.address,因此它只更改IE的url中的哈希值 现在的问题是,如果有人将该网站的链接发送给他们从Chrome复制的朋友,而他们的朋友使用IE,那么该链接将开始在该url中添加新的has 例如: -发送给朋友的URL -朋友访问网站后的URL 所以,我被困在如何重写/重定向它们上。因为,散列永远不会被发送到Apache。 我在推特上看到过,他们做的正是我想要的,但我不知道怎么做 被重定向到,它在IE中工作 非常感谢您的帮助,如果您不理解,请让我详细说明 正如David Thomas所建议的,函数如下Javascript 重写URL哈希以获取变量,javascript,jquery,.htaccess,url-rewriting,Javascript,Jquery,.htaccess,Url Rewriting,我在一个有动态内容的网站上工作 单击文章时,它将使用推送状态更改为地址 例如: -单击新闻项目之前 -点击新闻项目后 但是由于pushstate在IE或更老的浏览器中不起作用,我将其重写为使用jQuery.address,因此它只更改IE的url中的哈希值 现在的问题是,如果有人将该网站的链接发送给他们从Chrome复制的朋友,而他们的朋友使用IE,那么该链接将开始在该url中添加新的has 例如: -发送给朋友的URL -朋友访问网站后的URL 所以,我被困在如何重写/重定向它们上。因为,散列
var permalink = function(title, id, permalink){
var current = siteUrl + type + (order ? '/orderBy/' + order : '');
var newUrl = current + '/' + permalink + '/';
if(jQuery.browser.msie){
newUrl = '/' + permalink + '/';
jQuery.address.value(newUrl);
}
else{
stateNum++;
window.history.pushState({state: stateNum}, title, newUrl);
}
jQuery('title').html('SITE - ' + title);
}
您需要做的是使用插件(如jqueryhistory)或自己创建一个事件来检查哈希更改。然后,读取散列(去掉“!”),然后根据需要处理散列。您可能希望使用它来执行ajax(例如加载域/散列),并将内容放在页面的某个位置
明白了吗?经过一段时间的思考,我只能找到一个解决方案 我会把它贴在这里,以防有人遇到类似的情况 我的解决方案有点老套。如果浏览器是IE,并且在某个点后有一段url,我将其作为新闻项的名称。一旦我有了名字,我就将它们重定向到合适的url
var permalink = function(title, id, permalink){
var current = siteUrl + type + (order ? '/orderBy/' + order : '');
var newUrl = '/' + permalink + '/';
if(jQuery.browser.msie){
jQuery.address.value(newUrl);
}
else{
current = siteUrl + type + (order ? '/orderBy/' + order : '');
newUrl = current + '/' + permalink + '/';
stateNum++;
window.history.pushState({state: stateNum}, title, newUrl);
}
jQuery('title').html('SITE - ' + title);
}
jQuery(document).ready(function(){
jQuery.address.crawlable(true);
if(jQuery.browser.msie){
if(jQuery.address.value() == '/'){
var currentPermalink = window.location.toString();
currentPermalink = currentPermalink.split(type);
if(currentPermalink[1] !== '/'){
window.location = siteUrl + type + '/#!' + currentPermalink[1];
jQuery.address.value(newUrl);
}
}
}
});
整个站点工作正常,当您加载页面时,它会动态加载内容,并且还会更改散列。问题是,如果你转到IE中的页面,它会将哈希附加到旧URL上。比如在我的例子中,我认为你必须发布这个函数,因为你在这里得到的任何答案都应该或者将会与这个函数集成。Twitter想要这样做。这要简单得多。你真的需要在IE上提供AJAX支持吗?AJAX支持只需要在IE9中工作,但仍然没有帮助,因为它不支持pushstate。