javascript - 在 HTML 输出中强制使用 CSS 十六进制代码

标签 javascript css dom

我正在尝试通过一个简单的 document.body.innerHTML 检索从我的(自制的)基于 Web 的文本编辑器检索 HTML 内容,它工作正常。

出于各种原因,我希望所有 css 颜色引用(例如字体、边框、背景颜色等)都采用十六进制表示法,而不是 rgb() 表示法。

例如,要将所有 rgb 值转换为 fontcolors 的十六进制,我使用函数 rgb2hex():

var elems =     this.cont_doc.getElementsByTagName('*');
var len =       elems.length;
for(var n=0;n<len;n++)
{
    if(elems[n].style.getPropertyValue('color'))
    {
        var color = this.rgb2hex(elems[n].style.getPropertyValue('color'));//e.g rgb(255,38,0) becomes #ff2600 
        elems[n].style.setProperty('color',color);  
    }
}

但是,当我以十六进制格式设置颜色时,总是在最后输出 rgb 值,例如 var output_string = this.cont_doc.body.innerHTML; 。有没有办法保留十六进制格式,或者有没有我可以在最终 output_string 中应用的正则表达式解决方案?

谢谢 帕特里克

最佳答案

据我所知,Chrome 在请求 innerHTML 时强制所有的 rgb。您可以轻松地在 HTML 上使用正则表达式。

这是一个示例,只需在您的 innerHTML 上使用即可。

go.addEventListener('click', _ => {
  const replaceRGB = (all, r, g, b) => [r, g, b].reduce((a, x) => a + (+x).toString(16).padStart(2, '0'), '#');
  output.value = input.value.replace(/rgb\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\s*\)/g, replaceRGB);
});
<textarea id="input">
rgb(255, 50, 15);
</textarea>
<textarea id="output">
</textarea>
<button id="go">Process</button>

关于javascript - 在 HTML 输出中强制使用 CSS 十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50928886/

相关文章:

java - 解析模式和同一模式中的导入

javascript - 通过正则表达式防止实时输入非数字

css - 我们可以像我们有 :hover? 那样在 css 中制作 onclick 效果吗

css - CSS 规则可以动态添加到 Sharepoint 2010 Web 部件控件吗?

html - CSS 选择器/xpath 和 url

php - 如何使用 php xpath 获取节点的所有子节点?

javascript - 基于Ajax选择调用更改图表数据

javascript - 我不明白拖放的几个部分

javascript - CasperJS 以及在爬取时将数据插入数据库

javascript - jQuery滑动函数