gpt4 book ai didi

php - 当编辑器在 ajax 中加载时,tinymce getContent() 返回空字符串

转载 作者:行者123 更新时间:2023-11-29 17:30:13 25 4
gpt4 key购买 nike

我正在将tinyMCE编辑器与使用Zend Framework开发的系统集成。

以下是tinymce编辑器代码的部分 View

<script type="text/javascript" src="<?php echo $this->baseUrl()?>/js/tinymce/jquery.tinymce.js"></script>
<script type="text/javascript" src="<?php echo $this->baseUrl()?>/js/jquery.validate.tinymce.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('textarea.editor').tinymce({
script_url : '<?php echo $this->baseUrl()?>/js/tinymce/tiny_mce.js',

// General options
theme : "advanced",
plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist",

// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true
});
});
</script>

问题是当 View 在ajax中加载时,在提交按钮的点击事件上调用以下内容:

var content = tinyMCE.get('body').getContent();
alert(content);

返回一个空字符串。如果 View 正常加载,一切正常。这个只有FF才有。即使使用 Ajax,Chrome 和 IE8 也能正常工作。

有人有这方面的经验吗?

编辑:基本上我的应用程序使用 MVC 结构。 View 是 MVC 的 V 部分。加载到浏览器的主页是一个项目列表页面,其中包含“添加新”按钮。单击后,将通过 ajax 加载新 View 并将其添加到页面中。加载的 View 包含tinymce 的所有javascript 代码和textarea HTML。除了 getContent() 调用在 FF 上不起作用之外,其他一切都工作正常

最佳答案

我自己也遇到过这个问题,“修复”是一个野兽。概括地说,Tiny 在其实例中存储对 DOM 元素(文档、正文、contentFrame、contentWindow)的引用。我认为(但不是 100% 确定)它最终也会在其内部 DOM、Selection 和其他 utils 生成的闭包中创建对它们的引用。因为它这样做,所以当您查看更改时,旧的 DOM 会被清除并替换为新的内容(可能具有相同的 ID?),但内部引用会被保留。

我需要实现的支持 IEx、FF3.x、WebKit(Chrome 和 Safari)的解决方案是在调用任何将重绘 RTE 区域的代码之前调用类似的内容:

for(var i=0, n=tinymce.editors.length; i<n; i++) {
tinymce.editors[i].destroy();
delete document.getElementById(tinymce.editors[i].id);
}

关于php - 当编辑器在 ajax 中加载时,tinymce getContent() 返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com