Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Firefox不会灰显我禁用的选择选项?_Javascript_Html_Firefox - Fatal编程技术网

Javascript 为什么Firefox不会灰显我禁用的选择选项?

Javascript 为什么Firefox不会灰显我禁用的选择选项?,javascript,html,firefox,Javascript,Html,Firefox,我有一个Javascript: let projectBox = document.getElementById("invoice_project_id"); let taskBoxes = document.getElementsByClassName("tasks"); function filterTasks() { let project = projectBox.options[projectBox.selectedIndex]; let results = Arra

我有一个Javascript:

let projectBox = document.getElementById("invoice_project_id");
let taskBoxes = document.getElementsByClassName("tasks");

function filterTasks() {
    let project = projectBox.options[projectBox.selectedIndex];
    let results = Array.from(taskOptions).filter(task => {
        return task.getAttribute("data-project-id") == project.value || task.value == "";
    })
    Array.from(taskBoxes).forEach(taskBox => {
        let source = taskBox.closest(".source");
        if (results.length > 2) {
            source.classList.add("active");
            taskBox.innerHTML = "";
            results.forEach(result => {
                if (result.getAttribute("data-charged") == "true") {
                    result.disabled = true; // some options get disabled here which works perfectly in all browsers except Firefox
                }
                taskBox.add(result.cloneNode(true));
            })
        } else {
            source.classList.remove("active");
        }
    })
}
它在所有浏览器中都能完美工作,除了Mac上的最新版本Firefox

由于某些原因,在Firefox中,禁用的选择选项不是!变灰了。它们在HTML中被禁用,但它们看起来像所有其他启用的选项

我错过了什么

这是Firefox的bug还是我的代码有问题

HTML:


在我的CSS中,我有一个特定于Firefox的技巧,可以从选定元素中删除虚线轮廓:

&:-moz-focusring { // remove dotted outline in Firefox
  color: transparent;
  text-shadow: 0 0 0 #000000;
}
从我的CSS中删除此选项修复了禁用的选项,并使它们看起来再次正常


虚线轮廓现在又清晰可见了,但我不再那么在意了。我想这只是口味的问题…

今天遇到了这个问题,并且发现出于某种原因,Firefox不再尊重选项的不透明度设置。我以前在Firefox上有一条规则:

option:disabled { opacity: 0.4; }
此外,在父选择上设置颜色属性似乎会破坏禁用选项的本机样式。解决方法是将我的不透明度规则更改为颜色:


这或多或少提供了相同的视觉效果。在“选择”菜单上设置颜色会破坏浏览器对禁用选项的支持,这有点奇怪,甚至可能会说这是一个错误。

据我所知,规范中没有定义标准的浏览器默认样式;如果您需要一致性,您必须提供样式来实现这一点。我在这里缺少什么?一方面,您的HTML中缺少显示您正在使用的内容的HTML…Windows上的Firefox会灰显禁用的标记,因此您的问题可能与您正在做的其他事情和/或Mac Firefox bug有关。但是如果没有一个例子来让我们重现这个问题,我们很难说出更多。请检查这个。在我的PC Windows 10中,默认样式表只添加了一个几乎不明显的灰色字体颜色,但外观完全不同,您还可以添加自定义CSS。如前所述,问题一定出在其他地方。@阿尔瓦罗冈萨雷斯:是的,你的小提琴看起来和我安装的Firefox for Mac中的小提琴一模一样。禁用的选项具有红色文本和粉红色背景。我想我的Javascript一定有问题,主要是可访问性问题-
option:disabled { opacity: 0.4; }
option:disabled { color: #ccc; }