在多标签页上,一些标签submit处理通过一个标签更改其他标签的内容ajaxSubmit.如果其他选项卡包含有效tinyMCE编辑,在更换内容之前应该对该选项卡执行什么操作以及在替换后我应该做什么(如果有的话)?
目前,代码tinyMCE.execCommand("mceRemoveControl", true, ed_id);在目标选项卡中的所有编辑器上执行,并依赖于系统的正常功能,以便在更改后将其恢复.这就是必要的吗?我tinyMCE在更改后在代码中遇到了模糊的异常,但很难发现原因.
错误本身是SCRIPT5022:IndexSizeError - tiny_mce.js(1,78075)但我怀疑这是特别相关的.
TinyMCE v3.4.5
我无法在wordpress编辑器中添加任何短代码.它显示 - Uncaught TypeError:Object [object Object]没有方法'execInstanceCommand'.plesase帮助我解决这个问题.
代码(tinymce.js)
function init() {
tinyMCEPopup.resizeToInnerSize();
}
function getCheckedValue(radioObj) {
if(!radioObj)
return "";
var radioLength = radioObj.length;
if(radioLength == undefined)
if(radioObj.checked)
return radioObj.value;
else
return "";
for(var i = 0; i < radioLength; i++) {
if(radioObj[i].checked) {
return radioObj[i].value;
}
}
return "";
}
function tjshortcodesubmit() {
var tagtext;
var tj_shortcode = document.getElementById('tjshortcode_panel');
// who is active ?
if (tj_shortcode.className.indexOf('current') != -1) {
var tj_shortcodeid = document.getElementById('tjshortcode_tag').value;
switch(tj_shortcodeid)
{
case 0:
tinyMCEPopup.close();
break;
case "button": …Run Code Online (Sandbox Code Playgroud) 我知道那里有很多解决方案,但无法找到正确的解决方案。我已经在tinyMCE版本3中为自定义计数器编写了代码,该版本的maxlength属性不起作用。我想在计数器达到0时停止提供更多文本setcontent(""),substring(0,maxcount)这似乎是有问题的,因为当我在其修剪后两个字符之间输入任意2个字符时,这种方式不应该这样。我也尝试过使用evt.preventDefault()它的阻止功能,但无法再次输入IN进行击键,而击键也排除了bacspace和delete,但它无法正常工作。这是我的代码。
tinyMCE.init({
mode: "textareas",
theme: "advanced",
editor_selector: "mceEditor",
paste_auto_cleanup_on_paste: 'true',
theme_advanced_disable: 'justifyleft,justifyright,justifyfull,justifycenter,indent,image,anchor,sub,sup,unlink,outdent,help,removeformat,link,fontselect,hr,styleselect,formatselect,charmap,separator,code,visualaid,strikethrough,fullscreen',
theme_advanced_buttons1: 'bold,italic,underline,numlist,bullist,undo,redo,cleanup,spellchecker',
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
plugins: 'spellchecker,fullscreen,paste',
spellchecker_languages: '+English=en-us',
spellchecker_rpc_url: '<%out.print(request.getContextPath());%>/jazzy-spellchecker',
theme_advanced_statusbar_location: "bottom",
theme_advanced_path : false,
statusbar: true,
setup: function(editor)
{
editor.onKeyUp.add(function(evt)
{
var maxLengthRichTextArea = 5;
var inputRichTextArea = $(editor.getBody()).text();
var inputRichTextAreaLength = inputRichTextArea.length;
var value = maxLengthRichTextArea-inputRichTextAreaLength;
if(value >= 0)
{
$(tinyMCE.activeEditor.getContainer()).find("#"+editor.id+"_path_row").html("Remaining chars: "+(value));
}
if(inputRichTextAreaLength > maxLengthRichTextArea) {
editor.setContent("");
tinyMCE.activeEditor.selection.setContent(inputRichTextArea.substring(0, maxLengthRichTextArea));
}
});
}
});
</script> …Run Code Online (Sandbox Code Playgroud) 我在 TinyMCE 中插入了一个换行符
tinyMCE.execCommand('mceInsertContent',false, "<br/>");
然而,光标当前停留在它之前的位置......这是有道理的,但是我想要将光标移动到我刚刚插入的 html 末尾的代码?
这是我的 tinymce.component.ts
import {
Component,
OnDestroy,
AfterViewInit,
EventEmitter,
Input,
Output
} from '@angular/core';
@Component({
selector: 'simple-tiny',
template: `<textarea id="{{elementId}}"></textarea>`
})
export class SimpleTinyComponent implements AfterViewInit, OnDestroy {
@Input() elementId: String;
@Output() onEditorKeyup = new EventEmitter<any>();
editor;
ngAfterViewInit() {
tinymce.init({
selector: '#' + this.elementId,
plugins: ['link', 'paste', 'table'],
skin_url: 'assets/skins/lightgray',
setup: editor => {
this.editor = editor;
editor.on('keyup', () => {
const content = editor.getContent();
this.onEditorKeyup.emit(content);
});
},
});
}
ngOnDestroy() {
tinymce.remove(this.editor);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用它我的html现在我可以得到文本通过keyupHandlerFunction但我想要2路绑定ngModel
<simple-tiny
[elementId]="'my-editor-id'" …Run Code Online (Sandbox Code Playgroud) 关于TinyMCE(v.3.5.11)默认粘贴功能,我有两个相关的问题:
粘贴时为什么没有文本?
将文本粘贴到编辑器后,内容在编辑器中可见,但不能通过该.getContent()方法获得.为什么?
在此活动期间,我可以强制TinyMCE获取它在编辑器中显示的文本吗?
为什么Ctrl+会V触发更改事件,但上下文菜单粘贴却没有?
如果使用键组合Ctrl + V将文本粘贴到编辑器中,onPaste则会触发第一个TinyMCE的事件,并且文本不可用.getContent()(如上所述); 紧随其后,onChange事件被触发,现在可以通过该.getContent()方法获得文本.
但是,如果您通过右键单击鼠标将文本粘贴到编辑器中,然后从上下文菜单中选择粘贴,onPaste则会触发TinyMCE的事件,但不会onChange.
为什么不同?关于这个还能做什么?
注意:我没有使用粘贴插件,所以请不要提供它或任何其他插件作为答案.我有兴趣创建自己的解决方案.
在TinyMCE 3中,您可以theme_advanced_toolbar_location = 'external'在mce设置中使用,使class = mceExternalToolbar元素.
然而,似乎并没有TinyMCE 4的确切等价物.我错过了什么,或者是一个外部工具栏在向下滚动时粘到顶部,在TinyMCE 4中不容易实现?
自从我从TinyMCE 3升级到TinyMCE 4后,我在控制台中出现以下错误:
Deprecated TinyMCE API call: <target>.onBeforeSetContent.add(..)
Run Code Online (Sandbox Code Playgroud)
我应该用什么呢?
tinymce-3 ×8
javascript ×5
tinymce ×5
tinymce-4 ×3
jquery ×2
ajax ×1
angular ×1
dom-events ×1
events ×1
html ×1
richtextarea ×1
tabs ×1