javascript - 如何检测html中的非官方标签?

标签 javascript html

给定一个 HTML 节点,你如何判断它是否带有官方 HTML 标签?

<h9 id="someNodeId">hello<h9>
let node = document.getElementById("someNodeId");

在上面的代码片段中,我希望 h9 不是官方的 html 标签。我如何使用 JS 以编程方式找到它?

编辑: 最好在 O(1)

最佳答案

有人已经为此编写了一个很好的函数,参见 usage guide on GitHub .

例子:

isElementSupported("h1"); // true
isElementSupported("h9"); // false

/*
 * isElementSupported
 * Feature test HTML element support 
 * @param {String} tag
 * @return {Boolean|Undefined}
 */

(function(win){
    'use strict';       

    var toString = {}.toString;

    win.isElementSupported = function isElementSupported(tag) {
        // Return undefined if `HTMLUnknownElement` interface
        // doesn't exist
        if (!win.HTMLUnknownElement) {
            return undefined;
        }
        // Create a test element for the tag
        var element = document.createElement(tag);
        // Check for support of custom elements registered via
        // `document.registerElement`
        if (tag.indexOf('-') > -1) {
            // Registered elements have their own constructor, while unregistered
            // ones use the `HTMLElement` or `HTMLUnknownElement` (if invalid name)
            // constructor (http://stackoverflow.com/a/28210364/1070244)
            return (
                element.constructor !== window.HTMLUnknownElement &&
                element.constructor !== window.HTMLElement
            );
        }
        // Obtain the element's internal [[Class]] property, if it doesn't 
        // match the `HTMLUnknownElement` interface than it must be supported
        return toString.call(element) !== '[object HTMLUnknownElement]';
    };
    
})(this);
Tag: <input id="toCheck" type="text" value="h9"><br><br>
Is supported? <input id="result" type="text" readonly><br><br>
<input type="submit" value="Check Tag" onclick="document.getElementById('result').value= (isElementSupported(document.getElementById('toCheck').value))">

关于javascript - 如何检测html中的非官方标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53981083/

相关文章:

javascript - JavaScript 中 'if' 条件内的变量赋值

javascript - 图像不会使用 Javascript Image Slider 滑动

javascript - 单选按钮值到输入值

html - 使 nav-pills 像 bootstrap 中的 navbar 一样可折叠

html - 空白 : pre-wrap not working in IE

html - 将图像拉伸(stretch)到屏幕底部 css

html - 在 Rails 中使用此 Web 模板

javascript - 现在 execCommand ("copy") 已过时,将文本复制到剪贴板

javascript - 选择文本并替换为循环

javascript - 没有 JSX 的 ReactJS