我正在开发具有动态内容的网站。
单击文章时,它会使用推送状态更改为地址。
示例:
http://www.some-site.com/news/ - 点击新闻项目之前
http://www.some-site.com/news/dynamic-url/ - 点击新闻项目后
但由于pushstate在IE或旧浏览器中不起作用,我已将其重写为使用jQuery.address,因此它只更改了网址中的哈希值。
现在的问题是,有人发送链接到网站给朋友,他们是从Chrome复制的,而他们的朋友使用的是IE,它会开始将新的内容附加到该网址。
示例:
http://www.some-site.com/news/dynamic-url/ - 发送给朋友的网址
http://www.some-site.com/news/dynamic-url/#!/dynamic-url - 朋友访问网站后的网址
所以,我一直坚持如何重写/重定向它们。因为,哈希永远不会被发送到Apache。 我在推特上看过,他们完全按照我的意愿行事,但我无法弄明白。
https://twitter.com/#!/google被重定向到https://twitter.com/google,并且可以在IE中使用。
非常感谢任何帮助,如果您不理解,请让我详细说明。
正如David Thomas所说,这是函数。
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);
}
答案 0 :(得分:0)
您需要做的是使用插件(如jquery历史记录)或自己创建事件来检查哈希更改。然后,你读取哈希(你剥离"!")然后处理哈希你需要什么。您可能希望用它来执行ajax(例如加载域/哈希)并将内容放在页面的某个位置。
这是清楚的吗?
答案 1 :(得分:0)
经过一段时间的思考,我只能找到一个解决方案。
如果有人遇到类似情况,我会在此发布。
我的解决方案,有点hacky。如果浏览器是IE并且在某个点之后有一个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);
}
}
}
});