0

我有现有的 URL,它们使用 URL 哈希在页面加载后向 javascript 提供额外数据,例如 http://www.example.com/my/directory/#/foo/bar/

我正在为其他东西实现 jquery.history,但还需要让那些旧的 URL 继续工作(例如,如果有人可能已经用该/#...部分添加了书签)。

但是在页面加载时,插件会删除域和 /# 之间的所有内容,例如 URL 最终变为: http ://www.example.com/foo/bar/

这不会在 IE 9 中发生,但会在 Firefox 和 Chrome 中发生。

有任何想法吗?我不认为这是插件中的错误,但如果有人建议不会破坏其其余功能的修复,我很乐意修改未缩小的源文件以供我自己使用。

一个可能的想法 - 我不再关心 URL 中 # 之后的额外数据是什么,因此也许可以在历史插件对其执行任何操作之前从 URL 中删除该部分。我还不完全确定这可能是什么时候,或者更具体地说,当插件在页面加载时修改 URL 时。

4

1 回答 1

1

最后,我做了我在问题末尾提到的事情。在调用历史插件 js 文件之前添加了这段内联 JS:

(function(){
    if (document.location.hash.length !== 0) {
        document.location.hash = '';
    }
})();

在最坏的情况下,我们最终得到的 URL 仍然有一个结尾#,但由于它没有,#/所以历史插件不会把它搞砸。

于 2013-10-16T09:58:47.093 回答