草庐IT

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

coder 2023-07-31 原文

我在使用<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/

有关html - HTML选择菜单随机无响应的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  4. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  5. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  6. ruby - Rails 3 的 RGB 颜色选择器 - 2

    状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基

  7. ruby-on-rails - capybara ::ElementNotFound:无法找到 xpath "/html" - 2

    我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'

  8. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  9. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

    我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

  10. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

随机推荐