1

可以定义和使用自定义标签吗?(这不会与未来的 html 标签冲突) - 同时通过更改 outerHTML 替换/呈现这些标签?

我在下面创建了一个演示,它似乎工作正常

    <!DOCTYPE HTML>
    <html lang="zh-CN">
    <头部>
        <script type="text/javascript" src="jquery.min.js"></script>
    </head>

    <正文>

    <div id="customtags">
        <c-TextField name="用户名" ></c-TextField> <br/>
        <c-NameField name="name" id="c-NameField"></c-NameField> <br/>
        <c-TextArea name="description" ></c-TextArea> <br/>
        <blahblah ct="d"></blahblah>
    </div>
    </正文>


    <脚本>

    /* 下面的代码用实际的 html 替换 cspa —— 哇,它工作得很好 */    
        函数替换自定义标签(){
            // cspa 是一个随机术语——实际上并没有任何意义
            var grs = $("*");
            $.each(grs,函数(索引,值){
                var tg = value.tagName.toLowerCase();
                如果(tg.indexOf(“c-”)==0){
                    控制台.log(索引);
                    控制台.log(值);
                    var obj = $(值);
                    变量 newhtml;
                    if(tg=="c-textfield") {
                        newhtml= '<input type="text" value="'+obj.attr('name')+'"></input>';
                    } 否则 if(tg=="c-namefield") {
                        newhtml= '<input type="text" value="FirstName"></input><input type="text" value="LastName"></input>';
                    } 否则 if(tg=="c-textarea") {
                        newhtml= '<textarea cols="20" rows="3">来自模型的一些描述</textarea>';
                    }
                    obj.context.outerHTML = newhtml;
                }


                z = 对象;
            });
        }

        if(typeof(console)=='undefined' || console==null) { console={}; console.log=function(){}}

        $(document).ready(ReplaceCustomTags);
    </脚本>
    </html>


更新问题:

让我进一步解释一下。请假设在浏览器上启用了 JavaScript - 即应用程序不应该在没有 javascript 的情况下运行。

我见过使用自定义属性在指定标签中定义自定义行为的库。例如 Angular.js 大量使用自定义属性。(它也有关于自定义标签的例子)。尽管我的问题不是从技术策略的角度来看 - 我不明白为什么它会在战略上导致代码的可扩展性/可维护性问题。

对于我来说,像 <ns:contact .....> 这样的代码比像 <div custom_type="contact" ....> 这样的代码更具可读性。唯一的区别是自定义标签被忽略并且不呈现,而 div 类型由浏览器呈现

Angular.js 确实显示了一个自定义标签示例(窗格/选项卡)。在上面的示例中,我使用 outerHTML 替换这些自定义标签 - 虽然我在库中没有看到这样的代码 - 我是否通过使用 outerHTML 替换自定义标签做了一些短视和错误的事情?

4

2 回答 2

0

它可能工作得很好,但它可能不是一个好主意。屏幕阅读器和搜索引擎可能很难/不可能阅读您的页面,因为它们可能无法解释 JavaScript。虽然我明白这一点,但最好使用此模板进行开发,然后将其“烘焙”为 HTML,然后再将其放到服务器上。

于 2013-01-27T21:56:27.673 回答
0

我想不出你为什么要这样做的理由。

如果您必须从事一个忽略所有常见做法和惯例的其他人编写的项目,您会怎么想?如果他们不再在公司寻找他们为什么以某种方式做某事,会发生什么?

您必须通过 JavaScript 才能使其正常工作这一事实应该是一个巨大的危险信号。除非您有很好的理由,否则请帮自己一个忙并使用预先存在的标签。六个月后,你会记得你为什么那样做吗?

于 2013-01-27T22:00:44.610 回答