Javascript 自动完成功能适用于 IE 和 Chrome,但不适用于 Firefox

标签 javascript firefox autocomplete

我正在开发一个客户网站,该网站在搜索表单中使用了 Javascript 自动完成功能。该网站是希伯来语的,但请不要让它吓跑您 - 我的问题是代码,而不是英语。 :)
链接:-已被作者删除-
大多数自动完成选项都是希伯来语的,但我添加了“测试”,这样也可以很容易地用英语进行测试。
基本上,这个自动完成脚本会生成一个文本输入框,当用户输入字母(onkeyup)时,会提供一个常见值列表(例如“test”)。 这在 Chrome 和 IE 中都可以正常工作,但由于某些原因 Firefox 的行为有所不同。
当你在Firefox中输入字母时,根据错误控制台:

Error: searchResult1 is not defined
Source File: 
Line: 1

第二个输入字段中的 searchResult0 也是如此(源代码中的 ~460 行)。
如果你看看 -removed- 自动完成脚本确实在 Firefox 中工作,所以我真的不知道我可能改变了什么,从而破坏了它的功能。

感谢您对此提供的任何帮助:)

最佳答案

问题是onkeyup="searchResult1.style.visibility='visible';...",它应该是document.getElementById('searchResult1').style.visibility - 您通过 ID 引用一个元素。这是一个旧的 MSIE 功能,带有 ID 的元素会变成“全局变量”,但这实际上不是您应该使用的东西。其他浏览器实现了对此错误功能(“全局范围污染”)的支持,以保持与 MSIE 的兼容性,但它只是一个兼容层,仅在某些条件下才会起作用。

关于Javascript 自动完成功能适用于 IE 和 Chrome,但不适用于 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090509/

相关文章:

javascript - Android主线程阻塞WebView线程

javascript - 如何修改javascript代码以接收用户的输入?

javascript - 著名的弹出挑战

css - Firefox 30.0 - -moz-外观 : none not working

asp.net - jQuery 的 ajax 导致 FireFox 中的整页刷新

Android 如果在自动完成中实现可过滤的正确方法

php - 在 PHP 表单中创建具有自动完成功能的输入字段

autocomplete - Elasticsearch 自动完成数组字段搜索

javascript - 如何避免因 mapDispatchToProps 函数而重新渲染连接的 React PureComponent?

javascript - 当使用 src 属性加载内容时,Google Chrome 开发者工具如何访问 <script> 标记的 "text"属性?