我想说

<html>
<body>
<mytag foo="bar">blah</mytag>
</body>
</html>


并在其他地方定义<mytag>的行为。但是对于那些不能很好地使用自定义标记的旧版浏览器,我只想在浏览器中加载一个js库,然后让它自动重写上面的代码即可

<html>
<body>
<div data-mytag data-foo="bar">blah</div>
</body>
</html>


显然,此功能可以在一个小时内被一起破解,但是出于惯例和可能方便的功能,我宁愿使用别人编写的一个小型库。你知道一个吗?注意:请不要回答为什么我不应该使用自定义标签。

最佳答案

对于第一部分,也许像

<mytag>yo</mytag>
<script>
var map = {
    MYTAG: function(s){
        // surround content with stars
        return '**'+s+'**';
    }
}
Array.prototype.slice.call(document.getElementsByTagName('*')).forEach(function(tag){
    // note on some IE versions you cant set innerHTML directly
    if(map[tag.tagName]) tag.innerHTML = map[tag.tagName](tag.innerHTML);
})
</script>


为了在运行时更改元素标签,我无法回忆起这种情况。人们可能会畏缩,但我可能会拿走整个document.body.innerHTML,使用正则表达式替换它并重置它。如果我知道我是可以照顾它的HTML内容的唯一创建者。

10-06 00:12