TinyMCE编辑器自动为download属性添加=""的问题求助
TinyMCE编辑器自动为download属性添加=""的问题求助
嘿,我之前帮同事排查过几乎一模一样的问题!TinyMCE这个行为其实是它默认的HTML解析规则在搞鬼——它会把HTML5里的布尔属性(比如download这种不需要赋值的属性)自动转换成属性名=""的格式,说是为了保持代码的“一致性”,但确实会和我们想要的原生写法冲突。
给你几个亲测有效的解决方向:
调整TinyMCE的核心配置,贴合HTML5标准
这是最稳妥的方法,直接在编辑器的初始化代码里指定使用HTML5的schema,同时明确声明允许的a标签属性:tinymce.init({ selector: 'textarea', // 你的其他配置项... schema: 'html5', extended_valid_elements: 'a[href|target|download|id|class]' });开启
schema: 'html5'后,编辑器会认可HTML5里布尔属性的原生写法,不会自动给download补上空值。extended_valid_elements则是明确告诉编辑器,这些a标签的属性是合法的,别乱修改。如果配置不生效,试试自定义预处理逻辑
要是上面的配置没起作用,还可以用编辑器的PreProcess钩子,在内容保存前手动修正属性格式:tinymce.init({ selector: 'textarea', setup: function(editor) { editor.on('PreProcess', function(e) { // 把所有a标签里的download=""替换成download e.content = e.content.replace(/download=""/g, 'download'); }); } // 其他配置... });这个方法比较直接,就是在编辑器准备处理内容保存前,做个字符串替换,把自动加上的
=""去掉。不过要注意,如果你有其他地方也用到download=""的写法,可能会误改,所以最好结合你的实际使用场景来用。
另外补充个小知识点:其实在HTML5标准里,download和download=""的功能是完全一样的——只要这个属性存在,浏览器就会触发下载行为。但如果你必须保证数据库里的代码和你输入的完全一致,那上面的方法应该能解决你的问题。
内容来源于stack exchange
相关产品推荐
相关产品推荐

