Dart 在编辑器升级后删除不允许的属性

2023-11-25

在 SDK 0.7.3.1_r27487 中升级我的 dart 编辑器后,我遇到错误“删除不允许的属性”。

我有一个自定义标签,其模板包含引导属性“data-target”和“data-toggle”。在以前的版本下可以使用,但升级后遇到错误。

Console

Removing disallowed attribute <A data-toggle="dropdown">
Removing disallowed attribute <BUTTON data-target=".navbar-collapse">
Removing disallowed attribute <BUTTON data-toggle="collapse">

.html 代码

<element extends="div" name="x-navbar" constructor="Navbar">
<template>    
  ..
  <a name="top" href="#" class="dropdown-toggle" data-toggle="dropdown">Shop <b class="caret"></b></a>
  ..
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"></button>
</template>
<script type="application/dart" src="custom_ui.dart"></script> 
</element>

您可能正在使用Element.innerHtml。你应该使用元素集InnerHtml反而。

正如您通过这个新方法的参数所看到的,HTML 代码现在已经过验证和过滤。要恢复旧的行为,您必须提供允许所有属性的验证器或树清理器。

要明确允许锚点和按钮上的“数据”:

// Call NodeValidatorBuilder.allowX() methods to customize the validator.

final NodeValidatorBuilder _htmlValidator=new NodeValidatorBuilder.common()
  ..allowElement('a', attributes: ['data-target', 'data-toggle'])
  ..allowElement('button', attributes: ['data-target', 'data-toggle']);

query('#anElement').setInnerHtml('a content', validator: _htmlValidator);

Element and CustomElement类在多个地方使用 HTML 清理(Element.html工厂,innerHtml财产,createFragment方法...)。

即使您不在自己的代码中直接使用这些方法,它们也会由底层 Dart 库调用(CustomElement类是为Polymer库,但也被最新版本使用Web UI图书馆)。

目前,无法全局禁用或自定义默认清理规则。所以我想你必须处理setInnerHtml调用...或等待另一个 SDK 版本来解决问题(“data-”属性是有效的 HTML5 代码,但默认的清理过滤器不允许它们以及内联样式:为什么这些属性被认为是不安全的?)。

注意:你应该考虑从 Web UI 切换到 Polymer, as Web UI 现已弃用.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 在编辑器升级后删除不允许的属性 的相关文章

随机推荐