Javascript 区分自定义HTML元素和本地HTML元素

Javascript 区分自定义HTML元素和本地HTML元素,javascript,polymer,Javascript,Polymer,在所有GoogleWebComponents教程中,它为自定义元素推荐了一种特定的命名方案。他们推荐这样做的事实可能是为了可读性,但它回避了一个问题:有没有任何方法可以可靠地(以编程方式)判断HTML元素是自定义的还是本机的?例如,聚合元素是HTML元素的实例,并且具有所有正确的属性。理想情况下,不需要区分两者之间的区别-您的元素应该在各个方面都像本地HTML元素一样工作。但是,如果出于某种原因必须专门针对它们,则可以查找名称中包含连字符的元素。自定义元素必须具有该连字符(如)才能有效,然而,如

在所有GoogleWebComponents教程中,它为自定义元素推荐了一种特定的命名方案。他们推荐这样做的事实可能是为了可读性,但它回避了一个问题:有没有任何方法可以可靠地(以编程方式)判断HTML元素是自定义的还是本机的?例如,聚合元素是
HTML元素的实例,并且具有所有正确的属性。

理想情况下,不需要区分两者之间的区别-您的元素应该在各个方面都像本地HTML元素一样工作。但是,如果出于某种原因必须专门针对它们,则可以查找名称中包含连字符的元素。自定义元素必须具有该连字符(如
)才能有效,然而,如果我没记错的话,HTML5规范中没有任何元素包含该连字符


注意:我没有仔细检查规范,但我确实认为缺少连字符是正确的。

你是对的。自定义元素规范要求包含连字符的元素。这可能不足以区分自定义元素,但如果元素的
标记名
不包含连字符,您就知道它不是自定义元素。请注意,
document.createElement
如果给定的元素名称不是已知的(本机或文档注册表中的自定义元素),则返回
htmlunknowneElement
。可以使用空注册表创建一个新文档,然后使用给定的标记名创建一个新元素。不过,检查连字符的第一次检查要便宜得多。