在动态加载的 TextArea 上加载 TinyMCE 不起作用
Loading TinyMCE on dynamically loaded TextArea not working
我正在尝试创建一个动态加载并自动应用 TinyMCE 编辑器的文本区域。
尽管有很多主题涵盖了这个主题,甚至还有一些教程,但我似乎并没有让它发挥作用。
我可能忽略了一个非常小的项目,但如果我只知道是什么..
情况
当前安装:TinyMCE 4.x + jQuery v1.10.1
通过 AJAX 调用加载文本区域的 HTML 页面。
我尝试在文本区域初始化 TinyMCE 编辑器。
那里失败了。
FireBug 错误控制台告诉我:ReferenceError: tinyMCE is not defined
但它已经被定义了。我什至尝试设置绝对路径。
<title>jQuery test file</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/classes/jquery.tinymce.js"></script>
<script type="text/javascript">
$(function() {
$('.EditorField').tinymce({
script_url: 'http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/tinymce.jquery.min.js'
});
});
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
$.get("test.php", function( EditorHTML ) {
$("#EditorSection").html( EditorHTML );
tinyMCE.execCommand('mceAddEditor', false, '.EditorField');
});
});
</script>
我使用的HTML表单代码:
<form method="post" action="result.php">
<div>
<div id="EditorSection">
</div>
<br />
<input type="submit" name="save" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</div>
</form>
AJAX加载的代码可能也很重要:
<textarea name="TextArea1" cols="20" rows="2" class="EditorField" id="WysyWig" style="background-color: red; width: 100%; height: 700px;">
动态加载的文本区域内容
我在这里尝试了多种选择:
tinyMCE.execCommand('mceFocus', false, '.EditorField');
tinyMCE.execCommand('mceAddEditor', true, '.EditorField');
或直接通过 ID 本身。 应该没什么区别
tinyMCE.execCommand('mceAddControl', false, '#WysyWig');
我希望有人看到我忽略了什么。
用一个替换你的脚本标签:
<script type="text/javascript">
jQuery(document).ready(function() {
$.get("test.php", function( EditorHTML ) {
$("#EditorSection")
.html( EditorHTML )
.find('.EditorField')
.tinymce({
script_url: 'http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/tinymce.jquery.min.js'
});
tinyMCE.execCommand('mceAddEditor', false, '.EditorField');
});
});
</script>
基本上,您将等待 Ajax 响应,一旦它出现在您的 DOM 中,您将初始化 tinyMCE。
我正在尝试创建一个动态加载并自动应用 TinyMCE 编辑器的文本区域。
尽管有很多主题涵盖了这个主题,甚至还有一些教程,但我似乎并没有让它发挥作用。
我可能忽略了一个非常小的项目,但如果我只知道是什么..
情况
当前安装:TinyMCE 4.x + jQuery v1.10.1 通过 AJAX 调用加载文本区域的 HTML 页面。
我尝试在文本区域初始化 TinyMCE 编辑器。 那里失败了。
FireBug 错误控制台告诉我:ReferenceError: tinyMCE is not defined 但它已经被定义了。我什至尝试设置绝对路径。
<title>jQuery test file</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/classes/jquery.tinymce.js"></script>
<script type="text/javascript">
$(function() {
$('.EditorField').tinymce({
script_url: 'http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/tinymce.jquery.min.js'
});
});
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
$.get("test.php", function( EditorHTML ) {
$("#EditorSection").html( EditorHTML );
tinyMCE.execCommand('mceAddEditor', false, '.EditorField');
});
});
</script>
我使用的HTML表单代码:
<form method="post" action="result.php">
<div>
<div id="EditorSection">
</div>
<br />
<input type="submit" name="save" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</div>
</form>
AJAX加载的代码可能也很重要:
<textarea name="TextArea1" cols="20" rows="2" class="EditorField" id="WysyWig" style="background-color: red; width: 100%; height: 700px;">
动态加载的文本区域内容
我在这里尝试了多种选择:
tinyMCE.execCommand('mceFocus', false, '.EditorField');
tinyMCE.execCommand('mceAddEditor', true, '.EditorField');
或直接通过 ID 本身。 应该没什么区别
tinyMCE.execCommand('mceAddControl', false, '#WysyWig');
我希望有人看到我忽略了什么。
用一个替换你的脚本标签:
<script type="text/javascript">
jQuery(document).ready(function() {
$.get("test.php", function( EditorHTML ) {
$("#EditorSection")
.html( EditorHTML )
.find('.EditorField')
.tinymce({
script_url: 'http://domein1.nl/serene2/workspace/TinyMCE/tinymce_4.2.5_dev/tinymce/js/tinymce/tinymce.jquery.min.js'
});
tinyMCE.execCommand('mceAddEditor', false, '.EditorField');
});
});
</script>
基本上,您将等待 Ajax 响应,一旦它出现在您的 DOM 中,您将初始化 tinyMCE。