javascript - 无法将 Javascript 符号绑定(bind)到 HTMLElement.style

标签 javascript

为什么我可以将 JavaScript 符号绑定(bind)到除 HTMLElement 的 style 属性之外的所有内容?

https://jsfiddle.net/elgs/ftj9zx42/3/

这是 HTML:

<div id='a'></div>

这是 Javascript:

const a = document.querySelector('#a');
a.classList._someSymbol = Symbol('some_symbol');
console.log(1);
a.style._someSymbol = Symbol('some_symbol');
console.log(2);

这是输出:

1
(index):35 Uncaught TypeError: Cannot convert a Symbol value to a string
    at window.onload ((index):35)

更新:

整个故事是我正在编写一个代理,它将一个 Symbol 附加到每个属性作为 get 陷阱中的标识符,这无意中包含了样式。我最终将只包括我感兴趣的属性,不包括样式。但现在我收到了这个错误,我很好奇为什么会这样。

最佳答案

它依赖于浏览器。由于 HTML 是一种标准(它​​是关于用户代理应如何解释文档的一系列指南)。

因此,您上面的示例在 FireFox 中确实有效,但在 Google Chrome 中无效。 如果您想了解原因,我建议您查看浏览器的源代码,它似乎正在转换您的符号 toString

关于javascript - 无法将 Javascript 符号绑定(bind)到 HTMLElement.style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57486756/

相关文章:

Javascript - onClick 返回点击的内容

javascript - 无法从我的本地 Node.js 服务器访问 mongolab 中的集合

javascript - 当存在哈希时按下浏览器后退按钮时执行某些操作

javascript - 使用 javascript 删除文本

javascript - 如何使用 JavaScript 或 CSS 动态更改 SVG 过滤器?

javascript - 获取选定列的索引(DataTables + ColVis)

javascript - 将 2 个脚本合并到 1 个文件中

javascript - lodash/下划线检查一个对象是否包含另一个对象的所有键/值

javascript - 使用数组创建状态下拉菜单

javascript - 可以一个位置:fixed element with percentage width be calculated from body width?