Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVASCRIPT中粘贴到RTE时删除MS Word格式_Javascript_Extjs_Ms Word - Fatal编程技术网

在JAVASCRIPT中粘贴到RTE时删除MS Word格式

在JAVASCRIPT中粘贴到RTE时删除MS Word格式,javascript,extjs,ms-word,Javascript,Extjs,Ms Word,我使用的是一个EXTJS HTML编辑器,字符是2000,但是当你从Word复制时,我正在剥离所有的MS Word格式,我使用的是我在这里找到的这个函数 function cleanHTML(input) { // 1. remove line breaks / Mso classes var stringStripper = /(\n|\r| class=(")?Mso[a-zA-Z]+(")? ^p)/g; var output = input.replace(str

我使用的是一个EXTJS HTML编辑器,字符是2000,但是当你从Word复制时,我正在剥离所有的MS Word格式,我使用的是我在这里找到的这个函数

function cleanHTML(input) {
    // 1. remove line breaks / Mso classes
    var stringStripper = /(\n|\r| class=(")?Mso[a-zA-Z]+(")? ^p)/g;
    var output = input.replace(stringStripper, ' ');

    // 2. strip Word generated HTML comments
    var commentSripper = new RegExp('<!--(.*?)-->','g');
    var output = output.replace(commentSripper, '');

    // 3. remove tags leave content if any
    var tagStripper = new RegExp('<(/)*(meta|link|span|\\?xml:|st1:|o:|font)(.*?)>','gi');
    output = output.replace(tagStripper, '');

    // 4. Remove everything in between and including tags '<style(.)style(.)>'
    var badTags = ['style', 'script','applet','embed','noframes','noscript'];

    for (var i=0; i< badTags.length; i++) {
        tagStripper = new RegExp('<'+badTags[i]+'.*?'+badTags[i]+'(.*?)>', 'gi');
        output = output.replace(tagStripper, '');
    }

    // 5. remove attributes ' style="..."'
    var badAttributes = ['style', 'start'];
    for (var i=0; i< badAttributes.length; i++) {
        var attributeStripper = new RegExp(' ' + badAttributes[i] + '="(.*?)"','gi');
        output = output.replace(attributeStripper, '');
    }
    return output;
}
函数cleanHTML(输入){
//1.删除换行符/Mso类
var stringStripper=/(\n |\r | class=(“”)Mso[a-zA-Z]+(“”?^p)/g;
var输出=输入。替换(stringStripper“”);
//2.剥离Word生成的HTML注释
var commentSripper=new RegExp(“”,'g');
var output=output.replace(commentSripper,”);
//3.删除标签并保留内容(如果有)
var tagStripper=newregexp(“”,'gi');
输出=输出。替换(标记剥离器“”);
//4.移除中间的所有物品,包括标签“
var badTags=['style','script','applet','embed','noframes','noscript'];
对于(var i=0;i
但是,我想保持字体颜色不变,我已尝试删除font参数,但不起作用。

假设

  • 所示版本按预期工作
  • 您已验证HTML是否包含
    ,而不是
  • 您只对regexp有问题
以下命题成立:如果你替换

new RegExp('<(/)*(meta|link|span|\\?xml:|st1:|o:|font)(.*?)>','gi');
newregexp(“”,'gi');

newregexp(“”,'gi');

字体标记将不会从插入的HTML中删除,您将正确看到颜色。

我本周遇到了这个问题,并找到了这篇文章,我认为一个可靠的回复可能会帮助其他人解决问题。以下是我经过几天工作后的发现:


我一直在尝试做同样的事情,Alexander的答案并不能解决这个问题,因为
在哪里找到的?在这种情况下,有参考是很好的。@code4jhon“在这里找到”我的意思是在“StackOverflow”这里找到是的,但我的意思是,如果有一个链接,可以链接到您实际获得代码的位置,即使它引用了另一个SO问题。
new RegExp('<(/)*(meta|link|span|\\?xml:|st1:|o:)(.*?)>','gi');
function CleanWordFormatting(input) {
    // 1. Remove line breaks / Mso classes
    var stringStripper = /(\n|\r| class=(")?Mso[a-zA-Z]+(")?)/g;
    var output = input.replace(stringStripper, ' ');

    // 2. Strip Word generated HTML comments
    var commentSripper = new RegExp('<!--(.*?)-->', 'g');
    var output = output.replace(commentSripper, '');
    var tagStripper = new RegExp('<(/)*(meta|link|\\?xml:|st1:|o:|font)(.*?)>', 'gi');

    // 3. Remove tags leave content if any
    output = output.replace(tagStripper, '');

    // 4. Remove everything in between and including tags '<style(.)style(.)>'
    var badTags = ['style', 'script', 'applet', 'embed', 'noframes', 'noscript'];
    for (var i = 0; i < badTags.length; i++) {
        tagStripper = new RegExp('<' + badTags[i] + '.*?' + badTags[i] + '(.*?)>', 'gi');
        output = output.replace(tagStripper, '');
    }

    // 5. Remove any unwanted styling
    // NOTE: Add your own list of 'blacklisted' css attributes here
    var badStyling = ['margin-top:', 'margin-bottom:', 'line-height:', 'mso-fareast-font-family:&quot;', 'font-weight:', 'margin:'];
    for (var i = 0; i < badStyling.length; i++) {
        attrStripper = new RegExp('(' + badStyling[i] + ')([^;]*)+[^]', 'gm');
        output = output.replace(attrStripper, '');
    }

    // 6. Remove any unwanted attributes
    var badAttributes = ['start'];
    for (var i = 0; i < badAttributes.length; i++) {
        var attributeStripper = new RegExp(' ' + badAttributes[i] + '="(.*?)"', 'gi');
        output = output.replace(attributeStripper, '');
    }

    return output;
}
var tagStripper = new RegExp('<(/)*(meta|link|\\?xml:|st1:|o:|font)(.*?)>', 'gi');
// 5. Remove any unwanted styling
// NOTE: Add your own list of 'blacklisted' css attributes here
var badStyling = ['margin-top:', 'margin-bottom:', 'line-height:', 'mso-fareast-font-family:&quot;', 'font-weight:', 'margin:'];
for (var i = 0; i < badStyling.length; i++) {
    attrStripper = new RegExp('(' + badStyling[i] + ')([^;]*)+[^]', 'gm');
    output = output.replace(attrStripper, '');
}
var badAttributes = ['start'];