gpt4 book ai didi

javascript - 防止 Backbone.history.navigate 解码 URL 片段

转载 作者:行者123 更新时间:2023-11-28 06:08:04 24 4
gpt4 key购买 nike

我在事件触发后触发 Backbone 的导航功能来更改 URL。

代码

Backbone.history.navigate("?q="+encodeURIComponent(searchQuery))

就我而言,searchQuery 可能类似于 max müller,因此包含空格和 unicode 字符。这就是为什么我必须使用 encodeURIComponent 将其编码为 max+m%C3%BCller

但是在 Backbones 导航功能中,我的 searchQuery 被解码回“max müller”并像这样返回。

所以最后 URL 变成了

myroot.com/?q=max müller

这不是一个有效的 URL。相反,它应该是这样的:

myroot.com/?q=max+m%C3%BCller

据我所知,有两种可能的方法来解决这个问题:

 1. changing/extending Backbone.history.navigate to return the encoded
fragment

2. recreating Backbone's navigate functionality to change the URL with plain Javascript or using any other library

但是为什么它不是 Backbone 的默认行为呢?创建无效的 URL 是没有意义的。

最佳答案

查看主干js源代码就可以找到答案:

https://github.com/jashkenas/backbone/blob/master/backbone.js#L1817

基本上,为了将 url 与您的路由相匹配,您需要对 url 进行解码。这有点有意义,因为您不希望在代码中使用 url 编码的路由 - 尽管遗憾的是这并不能真正帮助您。

我怀疑延长期限是最明智的做法

关于javascript - 防止 Backbone.history.navigate 解码 URL 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com