我想说
<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内容的唯一创建者。