我不知道如何在这里展示问题,所以我会尽力描述它。
我正在使用的开发系统是基于AEM 5.6.1构建的,我遇到的问题是我们网站上的某个网址结构曾经工作过,而且最新的代码库不再存在。我无法在代码中找到可能会影响此更改的代码(在构建版本之间)。
起始网址的示例:
http://localhost:4502/path.html
旧网址示例:
http://localhost:4502/path.html#card/path/jcr:content/something/test?comment
现在变成了什么:
http://localhost:4502/card/path/jcr:content/something/test?comment
这是奇怪的部分,为什么我认为这个问题与hashchange
事件有关...根据我的经验,如果我有一个这样的控制台记录器设置:
$(window).on('hashchange', function() {
console.log("hash changed to: " + location.hash)
});
每当url在#之后发生变化时,我会在控制台中看到新的哈希值。在我的示例中,我单击了一个链接,该链接将我带到旧URL(上面指定),但在我的hashchange事件触发之前,SOMETHING将URL更改为新URL,并破坏了页面的功能。然后控制台记录器将触发,但不再有任何哈希值,因此它是空的,并且好像没有任何改变,直到同时发生了2次更改。
更奇怪的是,如果我将随机哈希添加到我的网址(如#test或#me),它们将被注册并输出到控制台。一旦我在/
之后更改我的网址以获得#
,奇怪的网址更改就会接管,我在控制台中看不到任何内容(或者进入调试语句,如果我放入到我的代码块之后)直到第二次更改完成之后。
hashchange
事件是否有可能以某种方式晚于正常情况发射?哈希确实发生了变化,在我从浏览器获得任何反馈之前也会被删除。我使用的是Chrome,但是在各种浏览器中都尝试过这种方法,效果相同。任何帮助将不胜感激。