内容属性和IDL属性如何交互?

问题描述 投票:0回答:1

我正在尝试理解 MDN 术语表中关于 IDL 的简短 条目。

特别是,我正在努力解决“内容与 IDL 属性”标题下第 4 段中描述的行为。

大多数时候,IDL 属性会返回实际使用时的值。例如,

type
元素的默认
<input>
是“文本”,因此如果设置
input.type="foobar"
<input>
元素将是文本类型(在外观和行为上),但“类型”内容属性的值将为“foobar”。但是,
type
IDL 属性将返回字符串
"text"

我将列出一系列问题,以及我目前在要点中的“有根据的猜测”。我想要么证实我的理解,要么暴露我的缺乏。任何意见、澄清或批评都值得赞赏(这些问题可能完全没有根据)。


在此上下文中,“它们实际使用的值”意味着什么(它们的默认值[例如“text”],或在特定上下文中设置的值[例如“foobar”])?

  • 默认(在示例中为“测试”)-因此是引用的最后一句话。

<input>
元素的类型是IDL还是内容属性?

  • (技术上两者都是?但因为我们通过
    input.type
    访问它,所以它是一个)IDL 属性

如果使用

element.foo
设置 IDL 属性,那么
input.type
不符合设置 IDL 属性(在这种情况下,“type”内容属性应该 not
"foobar"
)?

  • 这错过了 IDL 属性的一个关键行为。内容属性:内容属性可以通过 IDL 属性设置,同时保持 IDL 属性本身不变。
javascript html dom idl
1个回答
0
投票

在此上下文中,“它们实际使用的值”意味着什么(它们的默认值[例如“text”],或在特定上下文中设置的值[例如“foobar”])?

type
不仅仅是一个存储某些值的字段,对吗?这是
<input />
元素的一个重要特征,浏览器应该理解和使用。浏览器将根据该字段呈现不同的控件和/或其行为(比较
<input type="text" />
<input type="file" />
<input type="date" />
)。

拥有各种具有不同功能集的浏览器,当收到未知值时它们不会停止工作。对于输入的

type
属性,当给定值未知时,它们只会回退到
text

因此,

text
将是真正使用的,而
foobar
仍按最初设置的方式存储,并且可以通过
attributes
访问。

元素的类型是 IDL 还是内容属性?

你是对的,它既是:IDL 又是内容属性,具体取决于它的访问方式。它存储原始值,您可以通过

element.attributes['type']
访问它,并且可以通过 IDL 获取实际(工作/支持)值。

如果使用 element.foo 设置 IDL 属性,则 input.type 不符合设置 IDL 属性(在这种情况下,“type”内容属性不应为“foobar”)?

确实如此,但 IDL 属性不仅仅是一个可以放置任何内容的框。它将获取您的值,存储到属性字典中并尝试与各种验证和后备一起使用。如果它无法使用该值,它将使用它找到的最佳后备选项之一。

© www.soinside.com 2019 - 2024. All rights reserved.