Html select/option 无法在 Android 浏览器上打开
Html select/option does not open on Android browsers
下面的代码以一个更大的经典asp模块为例。
<SELECT Name="numSelect">
<OPTION Value="NONE" selected>-- choose a number below --</OPTION>
<OPTION Value=1>1</OPTION>
<OPTION Value=2>2</OPTION>
<OPTION Value=3>3</OPTION>
<OPTION Value=4>4</OPTION>
</SELECT>
- 代码在桌面浏览器、IE、Chrome、Firefox 和 Opera 中运行良好。该框已打开以显示选项,可以单击。
- 但是,该代码在 Android 移动浏览器、Opera-mobile、Chrome、Firefox 或内置的 Samsung Internet 浏览器中不起作用。单击向下箭头时,选择列表会在这些浏览器中打开。这有一个区别。 Puffin 浏览器 Android "does" 选项框正确(即打开)。
- 该代码在 iPhone 和 iPad 浏览器 Safari 中也不起作用。虽然显示了第一个选项,但列表并未打开。单击向下箭头时将打开选择列表。
我认为这可能与 HTML5 和早期版本之间的差异有关,但我找不到这样的参考资料。无论代码是通过 ASP 服务器发送,还是作为 .html 文件发送,浏览器行为都没有不同。
我的问题有两层。
- 浏览器之间可能有什么区别?我知道这是一个很复杂的问题。这可能无法回答,但如果可能的话,一个简短的解释。
- 是否有不同的方法来处理适用于 Android 的选项选择框(无需单击向下箭头即可显示列表的组合框)?我不是在寻找详细的代码;但欢迎提出建议。
感谢任何帮助and/or启发。
编辑:
如下所示,为属性添加引号。结果是一样的。桌面浏览器将 select/option 正确显示为打开框,但 Android 浏览器不显示为打开框,除了 Puffin 浏览器正确显示打开框。 iPhone 和 iPad 上的 Safari 也不显示打开的框。
您的问题可能与属性值中缺少引号有关,例如 value
。
有一个关于这个的问题:html-attribute-with-without-quotes
W3C
规范说:
All attribute values must be quoted, even those which appear to be
numeric.
https://www.w3.org/TR/xhtml1/#h-4.4
所以,您的代码可能是这样的:
<SELECT name="numSelect">
<OPTION value="NONE" selected>-- choose a number below --</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION Value="3">3</OPTION>
<OPTION value="4">4</OPTION>
</SELECT>
浏览器可以不同地处理这个问题,并且可能是问题所在,添加引号后,您的代码将遵循 W3C 规范
下面的代码以一个更大的经典asp模块为例。
<SELECT Name="numSelect">
<OPTION Value="NONE" selected>-- choose a number below --</OPTION>
<OPTION Value=1>1</OPTION>
<OPTION Value=2>2</OPTION>
<OPTION Value=3>3</OPTION>
<OPTION Value=4>4</OPTION>
</SELECT>
- 代码在桌面浏览器、IE、Chrome、Firefox 和 Opera 中运行良好。该框已打开以显示选项,可以单击。
- 但是,该代码在 Android 移动浏览器、Opera-mobile、Chrome、Firefox 或内置的 Samsung Internet 浏览器中不起作用。单击向下箭头时,选择列表会在这些浏览器中打开。这有一个区别。 Puffin 浏览器 Android "does" 选项框正确(即打开)。
- 该代码在 iPhone 和 iPad 浏览器 Safari 中也不起作用。虽然显示了第一个选项,但列表并未打开。单击向下箭头时将打开选择列表。
我认为这可能与 HTML5 和早期版本之间的差异有关,但我找不到这样的参考资料。无论代码是通过 ASP 服务器发送,还是作为 .html 文件发送,浏览器行为都没有不同。
我的问题有两层。
- 浏览器之间可能有什么区别?我知道这是一个很复杂的问题。这可能无法回答,但如果可能的话,一个简短的解释。
- 是否有不同的方法来处理适用于 Android 的选项选择框(无需单击向下箭头即可显示列表的组合框)?我不是在寻找详细的代码;但欢迎提出建议。
感谢任何帮助and/or启发。
编辑: 如下所示,为属性添加引号。结果是一样的。桌面浏览器将 select/option 正确显示为打开框,但 Android 浏览器不显示为打开框,除了 Puffin 浏览器正确显示打开框。 iPhone 和 iPad 上的 Safari 也不显示打开的框。
您的问题可能与属性值中缺少引号有关,例如 value
。
有一个关于这个的问题:html-attribute-with-without-quotes
W3C
规范说:
All attribute values must be quoted, even those which appear to be numeric.
https://www.w3.org/TR/xhtml1/#h-4.4
所以,您的代码可能是这样的:
<SELECT name="numSelect">
<OPTION value="NONE" selected>-- choose a number below --</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION Value="3">3</OPTION>
<OPTION value="4">4</OPTION>
</SELECT>
浏览器可以不同地处理这个问题,并且可能是问题所在,添加引号后,您的代码将遵循 W3C 规范