更新表单中无法为Summernote WYSIWYG编辑器设置值的求助
解决Summernote编辑器赋值时的HTML转义问题
我来帮你搞定这个问题!你遇到的错误核心原因很明确:直接把带HTML标签的内容输出到JavaScript变量里时,HTML里的引号、换行或者特殊字符会破坏JS的字符串语法规则,导致浏览器抛出SyntaxError。
最直接的解决方案:用json_encode处理变量
Laravel提供的json_encode()函数可以自动帮你把PHP字符串转换成合法的JavaScript字符串,它会自动转义所有需要处理的特殊字符(比如双引号、换行符、HTML标签里的特殊符号等)。修改你的代码如下:
$(document).ready(function(){ var markupStr = {!! json_encode($college->overview) !!}; $('.overview').summernote('code', markupStr); });
这样处理后,$college->overview里的HTML内容会被转成JS能正确识别的字符串,不会再出现语法错误。
备选方案:通过隐藏DOM元素读取内容
如果你的HTML内容特别复杂,也可以先把内容放到一个隐藏的DOM元素中,再用jQuery读取它的HTML内容,这种方式不需要手动处理转义:
首先在HTML里添加一个隐藏元素:
<div id="hidden-overview" style="display: none;">{!! $college->overview !!}</div>
然后修改JavaScript代码:
$(document).ready(function(){ var markupStr = $('#hidden-overview').html(); $('.overview').summernote('code', markupStr); });
为什么原来的写法会报错?
你之前直接用{!! $college->overview !!}输出内容,假设$college->overview的内容是<p>这是一段带"引号"的内容</p>,那么输出后的JS代码会变成:
var markupStr = <p>这是一段带"引号"的内容</p>;
显然这不是合法的JavaScript语法,浏览器会把<当成新的HTML标签的开始,直接抛出语法错误。
内容的提问来源于stack exchange,提问作者Sapnesh Naik
相关产品推荐
相关产品推荐

