gpt4 book ai didi

javascript - 如何解决 IE/Edge 中损坏的 removeAttribute?

转载 作者:行者123 更新时间:2023-11-29 10:58:12 25 4
gpt4 key购买 nike

我试图记住 contenteditable block 中选择或多选表单元素的选定项。对于 Firefox 和 Chrome,我只能记住所选项目,删除 selected 属性并标记应该具有它的项目。正常的 DOM 序列化会处理剩下的事情。尝试使用 IE 或 Edge 执行此操作失败得很惨,因为它根本不起作用。下面是一个小测试用例:

<!DOCTYPE html>
<html>
<body>
<select multiple>
<option id="op1" selected value="1">1</option>
</select>
<button onclick="var op1 = getElementById('op1'); op1.removeAttribute('selected'); alert(op1.outerHTML);">Test </button>
</body>
</html>

有没有人有一种方法可以在不必克隆具有属性的选项并用它们替换当前节点的情况下工作?目标是 IE 8+ 和 Edge;较旧的 IE 不感兴趣。

最佳答案

根据user3297291的建议,后续搜索发现Issue #12087679 for Edge .整合其中的建议可得到以下内容,适用于所有 IE11、Edge、Chrome 和 Firefox:

<!DOCTYPE html>
<html>
<body>
<select multiple>
<option id="op1" selected value="1">1</option>
</select>
<button onclick="var op1 = getElementById('op1');
op1.setAttribute('selected', false);
op1.selected = false;
op1.removeAttribute('selected');
alert(op1.outerHTML);">Test </button>
</body>
</html>

首先,明确确保该属性是 bool 值,默认不是(Edge bug)。接下来,禁用该属性以使 Microsoft 浏览器也删除该属性。最后,删除实现 DOM 级别 1 的世界其他地方的属性。

关于javascript - 如何解决 IE/Edge 中损坏的 removeAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52779967/

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