【问题标题】:window.location.href = window.location.href and JSLintwindow.location.href = window.location.href 和 JSLint
【发布时间】:2011-07-19 17:48:25
【问题描述】:

如果使用

window.location.href = window.location.href;

重新加载页面(不重新发布)不是坏习惯,我们应该如何看待 JSLint 的“Weird assignment”投诉?

EDIT window.location.reload() 不适合当您不想再次 POST 表单数据时。在某些浏览器中,它会引发“重新发送表单数据?”不需要时最好避免。

更新我做了一些非常简短的测试,发现:

  • Mac 上的 Chrome 12 和 Safari 5.0.5 不会使用 .reload() 重新发布
  • Mac 上的 FF 2.0、3.6、4.0、5.0 向用户显示带有.reload().reload(true).reload(false) 的“重新发送表单对话框”
  • XP中的IE6、IE8(标准)、IE8(IE7模式、标准); Win7 中的 IE9 和 IE10-tech-preview 的行为与 Mac 上的 FF 相同
  • window.location = window.location.href 在所有这些浏览器中的工作方式与 window.location.href = window.location.href 相同。

这里是the test script

【问题讨论】:

  • 你知道有一个 jslint 的电子邮件列表吗?你也可以在那里问这样的问题。
  • @ErikE:感谢您的建议。当设置了"browser" 选项时,也许这是 JSLint 愿意容忍的。

标签: javascript jslint


【解决方案1】:

试试这个

window.location = window.location.href;

【讨论】:

  • 但是window.location.reload()不重新发布表单吗?
  • 我认为它会在 Post 的情况下要求重试。我已经编辑了我的答案。
  • 这是一个淘气的编辑! 3 票赞成完全不同的答案。我需要在我需要支持的浏览器中检查这一点。
  • 我在原问题中添加了window.location = window.location.href;上的一些浏览器兼容性研究结果。
  • Chrome:使用 GET 重新加载页面 Firefox:重新执行上一个请求,这意味着如果它是一个 POST,你会得到一个很好的弹出窗口,询问你是否重新发送数据
【解决方案2】:

给自己赋值确实是一个奇怪的赋值。听起来更像是警告而不是抱怨。

我自己更喜欢使用:

window.location.reload()

编辑: 但这会重新发布表单,不是吗。这是关于同一件事的关于 SO 的帖子:php reload page without posting data

【讨论】:

  • 在 ShankarSangoli 的评论中查看我的 Q
  • Post/redirect/get 有它的位置,但它是一种服务器端技术。如果客户端脚本决定重新加载页面,比如说 ajax 错误,并且应该使用页面的当前 URL(可能有任何查询参数)但不重新发布,那么 window.location.href = window.location.href; 只是票。
  • 我有一个答案给你。谁在乎 jslint 说什么! :P
【解决方案3】:

这是一个奇怪的任务,JSLint 是对的。问题是设置变量具有重新加载页面的副作用。我会将其编码为 window.location.href = window.location.href + ''; 以避免 JSLint 错误并添加注释来解释它的作用。

【讨论】:

  • 毫无疑问这是一个奇怪的任务。不幸的是,您的建议无济于事:第 1 行字符 47 处的问题:预期为“字符串”,而是看到了“”。
  • 我可以发誓我检查过了。再试一次:window.location.href = window.location.href + String();
  • 这对 JSLint 来说没问题,肯定会等同于 window.location.href = window.location.href;。但我认为我更喜欢 ShankarSangoli 的 window.location = window.location.href;,我认为无需评论即可。
猜你喜欢
  • 2011-01-25
  • 2019-12-20
  • 2018-11-16
  • 2019-08-13
  • 1970-01-01
  • 2013-09-09
  • 2011-03-20
  • 1970-01-01
  • 2023-01-13
相关资源
最近更新 更多