当前位置: 首页 > 面试题库 >

为什么某些技术上可序列化的输入属性不能序列化?

解飞语
2023-03-14
问题内容

可序列化属性定义为:

  • 设置元素的属性时,它将反映在诸如的序列化查询中,getAttribute并且您可以看到DOM Inspector中的更改。
  • 当您获得.innerHTML元素的父节点的时,返回的html字符串将包含所有可序列化的属性,作为其对应的属性

我制作了一个页面,看起来好像它已经可靠地打印了inputChrome和Firefox
中该元素的所有可序列化属性的表://jsfiddle.net/tEVLp/16/。自定义属性从不可序列化,因此在firefox
webkitSpeech等中不可序列化。测试镀铬以获得最佳结果。

所有布尔值都是true因为false属性的序列化将是缺少属性,而该属性在测试中为假阴性。

所以我的问题是,为什么没有诸如.valueand可.checked序列化的属性?

从技术上讲,两者都是可序列化的。.value只是一个字符串,浏览器在序列化其他布尔属性(例如.readOnly和)时没有问题.disabled

我最好的猜测是,由于.defaultValue序列化为"value"-attribute并.defaultChecked序列化为"checked"-attribute,因此会发生冲突,因此
.valueand
.checked不能序列化。在那种情况下,为什么defaultX选择那些而不是那些反映更有用的电流.value.checked状态的选择呢?


问题答案:

输入元素的规范定义了确切的行为。从这里开始阅读(在此之前,先定义DOM接口,属性和类型)。

简洁的摘要(value定义与相似checked,因此为简洁起见,我value仅作解释)。

“属性” value反映值def,
“属性” value反映值内容属性def。

  • 该属性定义默认值属性(ref)。该值也反映DEF由defaultValue属性(REF)。
  • 设置value属性后,value属性将更改(ref)*。
    措词非常简洁。我跳过了一个重要的细节。此时,规范非常清晰,因此我只引用脏值标志部分:

每个输入元素都有一个布尔脏值标志。创建元素时,脏值标志必须最初设置为false,并且每当用户以更改值的方式与控件进行交互时,脏值标志必须设置为true。

值内容属性提供输入元素的默认值。添加,设置或删除值内容属性时,如果控件的脏值标志为false,则用户代理必须将元素的值设置为值内容属性的值(如果有)或为空字符串否则,然后运行当前值清除算法(如果已定义)。



 类似资料:
  • 问题内容: 我正在使用JavaScript将对象序列化为JSON字符串, 我注意到只有可枚举的对象属性才被序列化: [ 笔 ] 我想知道为什么会这样?我已经通过搜索MDN页面中,json2解析器文档。我找不到任何地方记录此行为。 我怀疑这是使用仅通过[[enumerable]]属性的循环(至少在情况下)的结果。可以使用类似的方法同时返回可枚举和不可枚举的属性。不过,这可能会导致序列化(由于反序列化

  • Json.net有没有办法只指定你想要序列化的属性?或者根据绑定标志序列化某些属性,比如只声明? 现在我正在使用< code > JObject。FromObject(MainObj。SubObj);要获取SubObj的所有属性,SubObj是遵循ISubObject接口的类的实例: 如果是,它将序列化A和B,但如果是,它将仅序列化B和C并忽略父属性

  • 问题内容: 如下代码: 引发以下异常: 我猜内部类具有一个允许对其私有访问的字段和方法的字段。声明内部类static 可以解决它,但是如果需要此访问权限怎么办?有没有一种方法可以在不包含封闭类的情况下序列化非静态内部类,例如通过引用外部类? 编辑:例如,仅在序列化之前才需要访问外部类。好的,编译器不知道这一点,但是我认为这就是关键字存在的原因。 问题答案: 如果InnerClass需要此访问权限怎

  • 我试图在Java中序列化,但在运行我的程序时,我收到一个。 查看类,我注意到它没有实现。 为什么不实现?

  • 如果接口只是一个标记接口,用于在 java 中传递有关类的某种元数据 - 我有点困惑: 在阅读了java的序列化算法(元数据从下到上,然后从上到下的实际实例数据)的过程之后,我无法真正理解哪些数据不能通过该算法进行处理。 简而言之: 哪些数据可能导致? 我怎么知道我不应该为我的类添加子句?

  • 如果我有一个模型序列化程序,其中数据库模型中不需要first_name和last_name(blank=True,null=True,default=None),并且我选择提交可能包含或可能不包含“first_name”或“last_name”字段的json数据,那么无论这些字段是否通过json请求提交,这些字段不应该存在于已验证的_数据[]中,因为它们列在序列化程序字段中,并且其默认值设置为无?