将HTML字符串附加到Iframe导致语法错误,执行此操作的正确方法是什么?

时间:2017-04-10 12:50:56

标签: javascript jquery html iframe append

我在做什么:

我正在存储(MySQL)格式化的文本,其结构如下:

I'm Robert (I'm = I am)<br>You're in France (You're = You are)<br><br><strong></strong><span class="st">?</span> <b>I</b>'m Robert  <br>? Am Robert <del> <br></del><br>? <b>You</b>'re Robert <br>? Are Robert  <br><br>I'm = I am<br>You're = ___ ___?<br><br><br><br>

我正在尝试从数据库中检索此字符串,然后将其附加到这样的WYSIWYG编辑器中。

function enableEditMode(){
            card_content.document.designMode = 'On';
            $('iframe[name=card_content]').contents().find('body').append("I'm Robert (I'm = I am)<br>You're in France (You're = You are)<br><br><strong></strong><span class="st">?</span> <b>I</b>'m Robert  <br>? Am Robert <del> <br></del><br>? <b>You</b>'re Robert <br>? Are Robert  <br><br>I'm = I am<br>You're = ___ ___?<br><br><br><br>");
}

我收到以下错误:

  参数列表

之后

SyntaxError:missing)

我认为这是因为&#34;&#34;报价导致问题。

问题:

如何在不包含像这样的语法错误的情况下将HTML附加到DOM中?

2 个答案:

答案 0 :(得分:1)

只需替换

class="st"

通过

class='st'

应该做的伎俩。我没有看到更多的报价冲突。

答案 1 :(得分:1)

我认为你需要逃避单引号或双引号:

function addslashes( str ) {
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}

来自:Escaping Strings in JavaScript

或者您在服务器端转义字符串并返回转义字符串。 因此,结果应该是这样的:

"this is a test, isn\'t it great! <span class=\"test\">Test</span>"