提前预取奇怪的行为

2024-02-05

我正在使用 Twitter 的 typeahead 的一个非常基本的设置。我有两个不同的搜索字段,因此有两个预输入初始化。

JavaScript:

$(document).ready(function() {
    $('input.search-event').typeahead({
        name: 'Events',
        prefetch: '/media/json/events.json',
        ttl: 0,
        limit: 10
    });

    $('input.search-artist').typeahead({
        name: 'Artists',
        prefetch: '/media/json/artists.json',
        ttl: 0,
        limit: 10
    });
});

events.json 和 Artist.json 的格式均为["entry1", "entry2", "entry3", "..."].

我在 Chrome 中的正常模式和隐身模式下得到不同的结果。在正常模式下,它似乎使用了一个不再存在的旧 json 文件(我已将其删除)。在隐身模式下,它使用正确的 json 文件,但不会自动建议添加到 json 文件中的最后一项。我希望ttl设置为 0 可以解决这个问题,但事实并非如此。我已经清除了浏览器缓存,但这并不能解决问题。我在其他帖子中读到我应该清除浏览器的本地存储,但我真的不知道如何操作。控制台日志中没有错误。

我刚刚发现 typeahead 在 FF 和 Safari 中根本没有显示任何内容:-)

EDIT:结果似乎还取决于name:价值。这应该发生吗?例如:如果我改变name:价值'test'提前输入根本不起作用。


提前输入does在 FF 和 Safari 中工作。事实上,没有name它对你不起作用(对我来说)表明你的 json 文件中的某些内容是错误的,并且过去并非如此,并且你的浏览器正在使用缓存版本。

Since name是缓存的关键,这可能可以解释您所看到的一切:

  • 在隐身模式下不起作用,因为隐身模式下不使用本地存储,并且 json 文件本身有问题。
  • 无法使用不同的名称,因为在缓存中找不到具有不同名称的数据集(同样,json 文件在某种程度上是错误的)。
  • 在 FF 和 Safari 中不起作用——同样的原因:json 很糟糕,而且它们还没有缓存任何内容。

要进行调试,请首先在网络选项卡下查看 Chrome 中的开发人员工具 (F12),然后查看对/media/json/artists.json,并确保它们没问题。然后确保内容确实是有效的 JSON。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提前预取奇怪的行为 的相关文章

随机推荐