Javascript 是什么触发了;标签;Stackoverflow的部分?
我已经找了好几个小时了。在“标记”“部分如何使蓝色框显示在下面 我不认为他们正在使用keyup事件触发器,因为蓝色框并没有在每次按键时更新 您可以通过转到并键入以下内容来测试: “aadfadasdfasdfasdfasdfasdfasfasdfsaf”Javascript 是什么触发了;标签;Stackoverflow的部分?,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我已经找了好几个小时了。在“标记”“部分如何使蓝色框显示在下面 我不认为他们正在使用keyup事件触发器,因为蓝色框并没有在每次按键时更新 您可以通过转到并键入以下内容来测试: “aadfadasdfasdfasdfasdfasdfasfasdfsaf” 键入时,您会注意到蓝色框“aadfadasdfasdfasdfasdfasdfasfasdfsaf”仅在键入几秒钟后出现。不在期间。他们可能会调用setTimeout和cleartimout在最后一次keyup事件后1秒运行代码。这只是一个例子
键入时,您会注意到蓝色框“aadfadasdfasdfasdfasdfasdfasfasdfsaf”仅在键入几秒钟后出现。不在期间。他们可能会调用
setTimeout
和cleartimout
在最后一次keyup
事件后1秒运行代码。这只是一个例子。实现这一点的方法有很多
一种方法是在客户端存储要自动完成的单词列表。这是非常快的,不会有任何延迟(除非你在一个程序中)
另一种方法是对服务器进行AJAX调用,并让服务器返回自动完成单词的列表。这就是为什么会这样。由于您不希望在用户每次键入字母时都进行ajax调用,因此实现了一个延迟以节省带宽并提高性能
如果您想在自己的网站上实现类似的功能,我建议您研究jQuery插件来实现这一点,因为有很多免费提供的插件
编辑:如您所述,触发器可能是一个keyup事件。但是,在显示可能的自动完成列表之前,触发器可能会使用
setTimeout()
等待一秒钟左右<代码>clearTimeout()用于在延迟期间按下另一个键以防止多次调用。使用Firebug或其他工具查看源代码。您将看到一个名为full.js
的文件。它被最小化了,但是您可以使用各种在线工具扩展代码;我采用非常懒惰的方法,将整个内容复制/粘贴到JSFIDLE中的“javascript”框中,然后点击“tidy”。我相信有更好(更快)的方法
无论如何,在该文件中,有几个函数可能会引起您的兴趣:
StackExchange.tagPreferences
及其子函数,initTagRenderer
和StackExchange.inlineEditing
。我认为最后一个函数是导致您所指的特定延迟的函数,但这很难说。我使用的是jQuery UI自动完成插件。我熟悉其他类似的插件。但这不是重点。我的问题更多的是关于这些事件是如何被触发的。@Christian Fazzini:Editing accordinglyThis不(IMHO)属于meta。我怀疑是这样的。您认为他们将超时设置为多长时间?只是为了更清楚地理解这一点。。在每个keyup事件上,都会设置一个setTimeout计时器?或者每次只有一个计时器被重置?你认为哪种方法更有效?@Christian:每次按键时,清除前一个计时器,然后设置一个新的1秒计时器。