在Firefox中,输入选择下拉菜单无法工作

5
我在Firefox浏览器中遇到了一个输入选择下拉框的问题,但在Google Chrome中运行良好。
我创建了一个jQuery子菜单框。我的问题是当我在子菜单的内容区域放置内容时,它可以正常工作。但是当我在该内容区域创建一个选择框时,在Firefox中无法工作,但在Chrome浏览器中可以正常工作...我的意思是当我尝试选择选项2、选项3等选项时,整个东西都会消失。
我需要你的帮助。
这是我的HTML代码:
<div class="layout_nemo" style="margin:0px auto; width:520px;">
    <aside id="models">
        <section class="nestingList" style="width:520px;">
            <div style="float:right; width:100px; border:1px solid #f00; text-align:right"><a href="#" class="track-click">A5</a>
            </div>
            <div style="clear:both; margin:0px; padding:0px;"></div>
            <div class="flyout" style="border:3px solid #000;">
                <div class="inner">
                    <div class="col" style="float:right;">
                        <ul class="nav">
                            <li><a href="#" class="track-click">A5 Coupé</a>
                            </li>
                            <li><a href="#" class="track-click">A5 Sportback</a>
                            </li>
                        </ul>
                    </div>
                    <div class="articles" style="float:left;">
                        <article class="visuallyhidden">
                            <select name="bvgn " style="border:1px solid #000; height:30px;width:180px;">
                                <option>option1</option>
                                <option>option2</option>
                                <option>option3</option>
                                <option>option4</option>
                            </select>
                            <select name="bvgn " style="border:1px solid #000; height:30px;width:180px;">
                                <option>option5</option>
                                <option>option6</option>
                                <option>option7</option>
                                <option>option8</option>
                            </select>
                        </article>
                        <article class="visuallyhidden" style="border:7px solid #3C0; height:30px;">content here</article>
                    </div>
                </div>
            </div>
        </section>
    </aside>
</div>

而且 CSS 代码:

.visuallyhidden {
    border:0;
    clip:rect(0 0 0 0);
    height:1px;
    margin:-1px;
    overflow:hidden;
    padding:0;
    position:absolute;
    width:1px;
}
.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
clip:auto;
height:auto;
margin:0;
overflow:visible;
position:static;
width:auto;
}
.clearfix:after, .layout_nemo .nemo_carousel .pagination:after {
clear:both;
}
aside {
display:block;
}
nav ul, ul.nav {
padding-bottom:0;
}
.flyout {
display:none;
height:auto;
overflow:hidden;
position:absolute;
z-index:9999;
}
.flyout nav#navigation .links a {
font-family:Verdana, Helvetica, sans-serif;
line-height:20px;
font-weight:bold;
background-position:0 -444px;
}
.flyout nav#navigation .links a:hover {
background-position:0 -444px;
}
.flyout>.inner {
position:relative;
margin:-3px 3px 3px 3px;
}
#models {
position:absolute;
top:-124px;
}
#models.home {
top:-84px;
}
#models section {
display:inline;
float:left;
}
#models .flyout {
left:-3px;
width:520px;
}
#models .articles, #models .inner {
overflow:hidden;
}
#models .inner {
position:relative;
padding-top:20px;
min-height:280px;
}
#models .nav li {
list-style-image:none;
list-style-type:none;
margin-left:0;
}
#models .nav a {
display:block;
height:29px;
line-height:29px;
padding-left:9px;
border-top:1px solid #e7e9ea;
text-decoration:none;
background:none;
}
body.special #main .content .mediaContainer, body.special #main .content .audi_flash_replace, body.special #main .content .flash_3col, body.special #main .content .con_flashfilm_3col, body.special #main .content body.special.detail .headline h1 {
font-size:36px;
}
.layout_nemo #models {
top:23px;
}
.layout_nemo #models section>h1>a {
margin-left:0;
}

我还要分享一个链接 , 在这个链接中我们尝试了所有js文件。请在firefox和chrome浏览器中查看该链接。


看起来是Firefox特有的一个bug,下拉菜单项不属于它们的父元素,因此会触发onmouseout事件。 :/ - Shadow The Spring Wizard
@ShadowWizard 有没有其他的方法可以解决,比如添加一些jQuery函数之类的?我真的需要解决这个问题 :) - indy
奇怪...那我就不知道了,抱歉。 - Shadow The Spring Wizard
@indy 如果你问我,最好从头开始。那个菜单一开始就不太好用,即使在Chrome中也是如此。 - Shadow The Spring Wizard
1
@ShadowWizard 我也有同样的感受..实际上,这整个代码只是一个大项目的很小一部分。所以我的选择非常有限。我不能从头开始。我必须沿用所有给定的 CSS 和 JS。否则,要做一个标准的下拉框对我来说不会太困难。如果我不能用给定的 CSS 和 JS 完成这个任务,那么我可能会放弃整个问题。尽管如此,再次感谢你的努力和时间 :) - indy
显示剩余10条评论
3个回答

2

主要在Chrome中开发会导致其他浏览器出现奇怪的行为,因此一个好的开始是在Firefox中进行。如果在Firefox中工作正常,那么99%的情况下它也会在其他地方正常工作,包括IE。Chrome有很多假设和“有用”的功能,这会使开发人员受挫。

此外,我在Firefox中的测试没有出现错误。我正在使用23.0.1版本。


你能给我看一下你的测试吗?因为我也在使用23.0.1,但是它显示错误。 - indy
你的HTML/CSS代码看起来很糟糕。我正在调试它。一旦我整理好了,我会发布结果。我需要几分钟时间。 - Nemanja
你刚刚重构了整个HTML代码并开始处理CSS。下拉菜单周围的所有效果和相关内容都不是在HTML/CSS内部发生的,因此你必须使用一些外部JavaScript来实现这个功能。 - Nemanja
我知道所有的HTML/CSS代码没有什么作用。这就是为什么我在这里张贴我的代码,以便我可以得到一些帮助。如果您能够使用其他HTML/CSS结构来做类似的事情,那我就没有任何问题。是的,我已经使用了一些外部JavaScript来完成这个。这是链接( http://jsfiddle.net/indy12/cgRA2/13/ )。在那个页面上(左边),在外部资源选项卡下,我放置了我的外部JavaScript。 - indy
@indy 我理解你的感受,但是那段代码真的很混乱。而且如果你没有完整的了解,重构起来也很困难。我不是在吹捧你,而是想帮助你,为此我必须先了解发生了什么。当我拆开代码后,我意识到代码本身并不是你的选项/选择在Firefox中出现问题的原因。我强烈建议你花点时间重新评估项目和完成方式。现在,把所有JS都塞进一个文件里,从开发的角度来看并不好。 - Nemanja

1
我刚刚重构了整个HTML代码,并开始处理CSS。到目前为止,我已经完成了这个工作,希望它能有所帮助。

http://jsfiddle.net/cgRA2/19/

<div class="layout_nemo">
<aside id="models">         
    <section class="nestingList">
        <div id="new_url_top">
            <a href="#" class="track-click">A5 series</a>
        </div>
        <div style="clear:both; margin:0px; padding:0px;"></div>
        <div class="flyout" style="border:3px solid #000;">
            <div class="inner">
                <div class="col" style="float:right;">
                    <ul class="nav">
                        <li><a href="#" class="track-click">A5 Coupé</a></li>
                        <li><a href="#" class="track-click" >A5 Sportback</a></li>
                    </ul>
                </div>
                <div class="articles" style="float:left;">
                    <article class="visuallyhidden">
                        <select name="bvgn " style="border:1px solid #000; height:30px;width:180px;">
                            <option>option1</option>
                            <option>option2</option>
                            <option>option3</option>
                            <option>option4</option>
                        </select>
                        <select name="bvgn " style="border:1px solid #000; height:30px;width:180px;">
                            <option>option5</option>
                            <option>option6</option>
                            <option>option7</option>
                            <option>option8</option>
                        </select>
                    </article>
                    <article class="visuallyhidden" style="border:7px solid #3C0; height:30px;">content here</article>
                </div>
            </div>
        </div>
    </section>
</aside>

下拉菜单的效果和相关内容并非在HTML/CSS中发生,也不是Firefox的问题。我认为您一定使用了一些外部JavaScript来实现这个效果,而我的猜测是正确的。
问题出在您的js.js文件中,它已经被包含在jsFiddle示例页面的外部文件中。问题的一部分在于该文件已与其他所有内容合并,并成为更大的整体的一部分。如果我完成了html/css之后还要去解决它,我真的会很头疼。
因此,制造问题的jQuery部分位于以下位置:
  • 第4836行
  • 第4841行
  • 第4937行
  • 第4942行
  • 第5074行
如果您能把这个混乱的代码拿出来并做点什么……祝您好运。
有人在这里发布了一个解决方案 当鼠标悬停在选择下拉框上时,包含的div失去焦点

0

2021年7月14日

最近有人遇到Firefox无法正确渲染HTML,特别是<select>元素的问题吗?请看下面:

我管理一个Grails Web应用程序已经多年了,就在前几天,我遇到了这个问题。我的网站在所有浏览器中都可以正常工作,但由于某种奇怪的原因,Firefox根本不会在其分配的<div>中呈现<select>标签。

通过在各种浏览器上进行大量测试并使用Firebug控制台/检查,我将其追踪到旧的HTML 4.0 Doctype定义。

一旦我将我的网站更新为HTML 5标准doctype,Firefox就会按照规定呈现所有内容。

解决方法:

更改旧Doctype: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

到新Doctype: <!DOCTYPE html>

我知道这比原始问题帖子晚了几年,但我真的很感激能够偶然发现这个答案。

我希望它能帮助到某个人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接