javascript - 设置 window.location.href 未按预期工作

标签 javascript angularjs

如果用户在 url foo.com/#/veryLongToken 并且 response.redirectUrlfoo.com/#/veryLongToken/resultToken ,在第一个示例中,当页面重新加载时,我们最终到达 foo.com/#/veryLongToken。 在第二个示例中,我们最终到达了 foo.com/#/veryLongToken/resultToken,这是我们所期望的。

更多信息;

  • 网址很长
  • 使用 AngularJS 窗口包装器 $window
  • 已在 Chrome 和 Safari 中测试,均显示相同的行为

不起作用:

function successHandler(response) {
   $window.location.href = response.redirectUrl;
   /* redirectUrl might contain only changes to the hash-fragment
      which is why we force a reload here */
   $window.location.reload();
}

作品;

function successHandler(response) {
   $window.location.hash = response.redirectUrl.substr(response.redirectUrl.indexOf('#'));
   $window.location.reload();
}

我真的很想知道为什么第一个示例不起作用。有什么想法吗?

更新: $window.location.hrefhttps://foo.fo.se/#/payment/Ak1ZWDg1MDhJAwJWVElOUE5WVEZQSQMCAwIDAgMCAwIDAgMCTVlYODUwOEkDAgMCAwIDHQDSqdsSYXcT5rdNEkrClAYdawRZXF3vwZUSSb9_XHeQTFJcyJxnQXnz1V4gQCTgm7q9OYmLKMFVEaCaZM8RX6iIExvQZT7uPjtfYowjvvU-JpO8yMhTquehcBOo_JEXqCskKVStCp25qWq4GdPXgP3f1KthAO17OOAdLHKMNm8bmNW8Nj-P_xltDTV22ZHABQS_4d0DcWSDj7ZfUK3q28zZ9pLdedu3sjblzmXqDiSBNEuDQfQOjMt_s0xlayYX0qUwJwwviaZ8aB-qLRnV7KD_LvaESGrtwq7_iiNIoB1jeFAp0dSG_N1c-5V-VZ3100DbJBoecTIF4NaCS62IxfM

response.redirectUrl

https://foo.fo.se/#/payment/AkpITDg0ODFIAwIwTDNWVkwzMzcwSgMCAwIDAgMCAwIDAgMCSkhMODQ4MUgDAgMCAwIDHTQ1Z7gveX-CH7OzdVcAtOtar9mOZQF8f4t7MFIM5b1_WU7BAEtYPfSD77sFsGmHnm4GoFMmsIHUCzscUiaP2iofV7rflegQADTieSpwbausFLn6FNmaVeZdlFEtoWr6cU1VlN09zqk4T-1cqheoDsb_jMWr3kTdZGkJh_168P99zjV324jpDIkKAZ12WFXuaphnGdNoJgP9Ka9S2aIi8LniCiJNtOq-iXL4w8JNYVyLrbOqB2QNpc__RtT5kcW9NEaPWehQx2S5CIB157RcI_WkeGJRb1DKSSuy8CFIYJVrEOlCb-GtZ9gmPhrLh6qPiumokJWSI2cUuFBDpaGAeiA/AkpITDg0ODFIAwJJTlRFUk5BTF9FUlJPUgMCAwIDAgJJTlRFUk5BTF9QUk9DRVNTX0RFQklUX05PTl9SRUNPVkVSQUJMRQMD

最佳答案

作为 URL 中的 # 标记 anchor ,更改它不会触发页面加载,因为您的 bas url (foo.com/) 保持不变。 window.location.href 不能处理 anchor 更改。

如果你想改变“ anchor ”部分,你必须使用 window.location.hash 来检测它(如你的第二个例子)

关于javascript - 设置 window.location.href 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137809/

相关文章:

java - HtmlUnit Java 按钮点击警告

css - 为什么我的缩略图没有出现在同一行中?

javascript - 折叠图标 - 如果超过三个元素,则更改不起作用

javascript - 我可以制作一个由多个过滤器组成的 angularJS 过滤器吗?

javascript - 如何仅通过javascript显示带参数的iframe

javascript - 如何使用 javascript 根据显示大小重新调整弹出图片库的大小

javascript - 部分内容未在动态网页上呈现

javascript - 数据表 YADCF 重置所有列时出错 (exResetAllFilters)

javascript - Angular2 Component 循环渲染 2 个 tr 元素

javascript - AngularStrap bs-select 不显示下拉菜单