gpt4 book ai didi

html - HTML选择菜单随机无响应

转载 作者:技术小花猫 更新时间:2023-10-29 11:44:46 25 4
gpt4 key购买 nike

我在使用<select>菜单时遇到了一个很奇怪的问题。当我单击退出(或最小化它)后返回包含<select>的页面时,<select>有时会折叠并变得无响应。我已经检查了所有代码,并且该代码是100%有效的,此外,我还发现其他网站也发生了这种情况。

我在最新版本的Safari(适用于OSX 10.6.8)以及最新版本的Chrome和Firefox(在Windows Vista和OSX 10.6.8上均经过测试)中崩溃了<select>菜单。奇怪的是,我无法在Windows 8上运行的Chrome中重现<select>崩溃的情况。...最后一个花絮:<select>元素的长度似乎会影响菜单崩溃的可能性(也就是说,<option>越多<select>元素中的元素折叠起来的可能性更大,有时一次选择并单击一次<select>菜单后,它就会折叠起来,有时可能需要5到6次尝试。

我的问题是:是什么导致此<select>崩溃问题,并且有已知的解决方法?请看下面的示例代码,它非常简单,但是<select>菜单在我之前提到的浏览器/操作系统中仍然处于折叠状态。提前致谢!

<!doctype html>
<html>
<head>
<title>Select Test</title>
</head>

<body>
<select name ="Test">
<option value = "0">0</option>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
<option value = "9">9</option>
<option value = "10">10</option>
<option value = "11">11</option>
<option value = "12">12</option>
<option value = "13">13</option>
<option value = "14">14</option>
<option value = "15">15</option>
<option value = "16">16</option>
<option value = "17">17</option>
<option value = "18">18</option>
<option value = "19">19</option>
<option value = "20">20</option>
<option value = "21">21</option>
<option value = "22">22</option>
<option value = "23">23</option>
<option value = "24">24</option>
<option value = "25">25</option>
<option value = "26">26</option>
<option value = "27">27</option>
<option value = "28">28</option>
<option value = "29">29</option>
<option value = "30">30</option>
<option value = "31">31</option>
<option value = "32">32</option>
<option value = "33">33</option>
<option value = "34">34</option>
<option value = "35">35</option>
<option value = "36">36</option>
<option value = "37">37</option>
<option value = "38">38</option>
<option value = "39">39</option>
<option value = "40">40</option>
<option value = "41">41</option>
<option value = "42">42</option>
<option value = "43">43</option>
<option value = "44">44</option>
<option value = "45">45</option>
<option value = "46">46</option>
<option value = "47">47</option>
<option value = "48">48</option>
<option value = "49">49</option>
<option value = "50">50</option>
<option value = "51">51</option>
<option value = "52">52</option>
<option value = "53">53</option>
<option value = "54">54</option>
<option value = "55">55</option>
<option value = "56">56</option>
<option value = "57">57</option>
<option value = "58">58</option>
<option value = "59">59</option>
<option value = "60">60</option>
<option value = "61">61</option>
<option value = "62">62</option>
<option value = "63">63</option>
<option value = "64">64</option>
<option value = "65">65</option>
<option value = "66">66</option>
<option value = "67">67</option>
<option value = "68">68</option>
<option value = "69">69</option>
<option value = "70">70</option>
<option value = "71">71</option>
<option value = "72">72</option>
<option value = "73">73</option>
<option value = "74">74</option>
<option value = "75">75</option>
</select>
</body>
</html>

更新:
这是在OSX 10.6.8上运行的Safari 5.1.9中折叠/无响应的 <select>菜单的屏幕截图(这是与我之前使用的Mac不同的Mac)。经过3次尝试(选择一个选项,然后从浏览器中单击),它变得无响应。单击时它不会显示选项列表,并且在重新加载页面之前完全没有响应。我将很快在Mac上下载chrome。

更新2:
根据@ webdad3,此问题也出现在IE9中

更新3:

这是我上面发布的但在JSbin中的源代码的链接。由@starbeamrainbowlabs提供。

http://jsbin.com/eXOMeRI/1/edit

更新4:

根据@Zarazthuztra,此问题在OSX 10.8中也存在。

更新5:

我接受@ cloudcoder2000的建议,并将此链接发布在问题本身中。我相信它表明 <select>不应崩溃(就像我们许多人正在经历的那样),而不管它包含的 <option>的数量是多少。

Is there a max number of options (values) in HTML drop down control?

我还要感谢大家迄今为止的帮助。

更新6:
我担心这个问题开始停滞……如果有人对导致此问题的原因有任何理论(不管它看起来有多“成熟”),请让我知道,我将尽快对其进行测试。

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

更新8:

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

更新9:
通过使用@Capile的代码,我能够在Safari 5.1.10(在OSX 10.6.8上运行)中使 <select>变为“未折叠”。请阅读他的答案以获取全部详细信息。我将在今天晚些时候或明天在Chrome和Firefox中测试他的代码。这确实很有希望,我认为我们即将解决这个问题。我要再次感谢大家到目前为止的帮助,你们很棒!

更新10:
我终于有机会在我的一台Snow Leopard(10.6.9)计算机上在Chrome中测试@Capile的代码。这次让 <select>折叠起来我遇到了很多麻烦,但是经过几分钟的尝试,终于做到了。将他的代码粘贴到控制台后, <select>“uncollapsed”(尽可能不加修饰)。这很好奇,因为如果此“崩溃”问题与系统级垃圾回收有关,那么人们会认为 <select>在浏览器之间会相当一致地“崩溃”,但事实并非如此。我已经测试了多种浏览器(跨多个操作系统),并且 <select>“崩溃”在某些浏览器(例如Safari)中似乎非常普遍……我公认不是专家程序员,所以我可能是错的,但是在任何情况下情况下,我只是想更新此问题,以便更大的头脑可以考虑新信息。

更新11:
我只是在这个问题上添加了一笔赏金,以期引起更多的兴趣(我希望这会有所帮助)。无论如何,我昨晚能够将 <select>折叠到最新版本的Firefox(在OSX 10.6.9中运行)上。不幸的是,我没有机会在Firefox中测试@Capile的代码,但今天我将尝试这样做。

最佳答案

由于<select>元素的用户界面由操作系统在多个浏览器中处理(这会使它们的完整样式更加复杂或无法实现),我想这是操作系统级别的错误,或者是与某些操作系统相关的浏览器错误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元素可能会被某种OS垃圾收集器捕获,而当您回到浏览器时,它只是希望OS再次显示它(但找不到) )。但这只是一个猜测-我需要分析Safari内存才能真正使用它。

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

关于html - HTML选择菜单随机无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859829/

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