HTML Select菜单随机无响应

 小艾的沙滩 发布于 2023-02-07 12:32

我在之后我点击它(或最小化它)的页面时,在最新版本的Safari(适用于OSX 10.6.8)以及最新版本的Chrome和Firefox(在Windows Vista和OSX 10.6.8上都经过测试)中体验过菜单折叠.奇怪的是,我无法重现在元素的长度会影响菜单崩溃的可能性(也就是说,元素中的元素越多)菜单会在被选中并单击一次后崩溃,有时可能需要5次或6次尝试.

我的问题是:导致我之前提到的浏览器/操作系统中菜单仍然崩溃了.提前致谢!




  Select Test



 
 

更新: 这是不应该崩溃(就像我们许多人所经历的那样),无论它包含的数量是多少.

HTML下拉控件中是否有最大数量的选项(值)?

到目前为止,我还要感谢大家的帮助.

更新6: 我担心这个问题开始停滞不前......如果有人有任何关于造成这个问题的理论(无论看起来有多么"离谱")让我知道,我会测试它尽快.

更新7:请 确认:我在几个不使用Javascript的页面上遇到过这个崩溃问题.此外,上面发布的示例代码(不包含任何Javascript)已经为我和其他一些stackoverflow用户(跨不同的操作系统和浏览器)崩溃了.

更新8:

@Capile能够重现在Mac OS X 10.9.1上运行的Safari 7.0.1中的崩溃问题.

更新9: 通过使用@Capile的代码,我能够让我崩溃有点麻烦,但经过几分钟的尝试,它终于做到了.将他的代码粘贴到控制台后会在浏览器中相当一致地"崩溃",但事实并非如此.我已经测试了无数的浏览器(跨多个操作系统),并且在最新版本的Firefox(在OSX 10.6.9上运行)中崩溃.遗憾的是我没有机会在Firefox中测试@Capile的代码,但我今天会尝试这样做.

1 个回答
  • 由于<select> 元素UI由操作系统在几个浏览器中处理(这使得它们的完整样式变得更加复杂或者不可能),我猜这是操作系统级别的错误,或者浏览器中与某些操作系统UI相关的错误功能 - 绝对不是源HTML的问题,这很简单,并且根据规范).

    对于浏览器,<select>元素是完全正常的:你可以在DOM看到它,甚至操纵它(它也会监听事件).如果您将其分离并重新连接到DOM,它将再次正常工作(打开并启用选择).如果你只是在控制台窗口运行下面的代码,你将再次使用它:

    var s=document.getElementsByTagName('select'),
        i=s.length,
        a=document.createElement('div'),
        b;
    while(i-->0) {
        s[i].parentNode.insertBefore(a, s[i]);
        b=s[i].parentNode.removeChild(s[i]);
        a.parentNode.insertBefore(b,a);
        a.parentNode.removeChild(a);
        b=null;
    }
    

    我的猜测是,当浏览器模糊时,UI元素可能会被某种操作系统垃圾收集器捕获,当你回到浏览器时,它只是希望操作系统再次显示它(但它找不到它) ).但这只是一个猜测 - 我需要配置Safari内存才能真正实现它.

    我可以在Mac OS X 10.9.1上运行的Safari 7.0.1上复制它,但无法在Firefox 28.0a2(Aurora)或Chrome 34(Canary)上复制它.

    2023-02-07 12:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有