【问题标题】:IE makes extra GET-request on hash changeIE 对哈希更改发出额外的 GET 请求
【发布时间】:2012-02-16 12:57:21
【问题描述】:

当我发出 XMLHttpRequest 时,我也会更改 window.location.hash

例如,mysite.com/gallery/q#1 变为 mysite.com/gallery/q#2

当这种情况发生时,IE8,如 Fiddler 和 nginx 日志所示,向mysite.com/gallery/(即 404)发出这个奇怪的额外请求。

页面没有重新加载,它就像一个 XMLHttpRequest。

GET http://mysite.com/gallery/ HTTP/1.1
Accept: */*
Referer: http://mysite.com/gallery/q
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
Accept-Encoding: gzip, deflate
Host: mysite.com
Connection: Keep-Alive

另外,哈希更改或 Ajax 请求不会触发这个额外的。

另一件需要注意的事情 - 额外的请求发生在不是在每个 Ajax 请求上。这似乎是随机发生的。

会不会是 nginx 配置错误?或者它只是众多 IE8 错误之一?

有解决方法吗?我不想要这个额外的负载。


更新

这是 Ajax 代码($ 代表 jQuery):

var id = link.getAttribute('data-id')

var xhr = $.ajax({
    cache: false,
    url: '/stock-items',
    method: 'GET',
    data: { id: id },
    dataType: 'json'
})
xhr.success(function (data) {
    if (currentId === id) {
        toggleLoader(false)
        displayData(data)
    }                                                                                                                           
})

以及哈希操作代码:

function setHash(link) {
    var index = $(link).index()
    globals.location.hash = index + 1
}

也尝试使用哈希符号,结果相同:

globals.location.hash = '#' + index + 1

Ajax 请求是点击图库图片链接:

links.on('click', function (e) {
    setHash(this)                                                                                       
    loadData(this)
    e.preventDefault()
})

我还尝试了这些linkshref 属性设置为HTML 中的#1#2 等等(并删除了e.preventDefault())。让哈希自然变化。不,无论如何都会提出额外的请求。

【问题讨论】:

  • 您用于更改哈希的确切 JavaScript 是什么?
  • @EricLaw-MSFT-,将代码添加到问题中。

标签: javascript jquery internet-explorer nginx hashchange


【解决方案1】:

访问者是否从另一个页面被重定向到受影响的页面?如果是这样,很可能是一个已知的 IE 错误。

看看这个类似的问题:javascript location.hash refreshing in IE

【讨论】:

  • 格雷格,是的,我见过这个问题。这不是重定向,该问题的答案中提供的解决方案不适用于我的情况(我检查过)。
  • 网站现在上线了吗?你能分享受影响页面的路径吗?
  • 格雷格,它还没有上线。不过,我可以分享代码。很快就会看到更新的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多