我在tinyMCE 4中创建了一个自定义插件。它弹出一个模态窗口并在所述目录中显示图像。您选择图像,然后将其添加到内容并关闭弹出窗口。我把它插入到内容中,但我似乎无法关闭弹出窗口。我尝试了很多不同的方法,但都没有。
我得到的一个错误是:
Uncaught TypeError: Cannot read property 'win' of undefined
随后的当前代码发生了这种情况:
插件:
tinymce.PluginManager.add('imageuploads', function(editor, url) {
// Add a button that opens a window
editor.addButton('imageuploads', {
text: 'Insert Image',
icon: false,
onclick: function() {
// Open window
editor.windowManager.open({
title: "Insert Uploaded Image",
url: 'insertimage.php',
width: 700,
height: 600,
inline: true,
close_previous: "yes"
});
}
});
});
插件文件:
$(document).ready(function(){
$('#submit-image-url').bind('click', function(){
var image_url = $('.image_choice:checked').val();
var insert_url = '<img src="/editor/uploads/' + image_url + '">';
parent.tinymce.activeEditor.selection.setContent(insert_url);
parent.tinymce.activeEditor.windowManager.close(this);
});
});
之前有一些HTML,但它只是用无线电输入列出的图像来确定选择哪一个。插入作品,但我似乎无法关闭弹出窗口。
任何帮助将不胜感激!谢谢!
错误来自第22746行的tinymce.js,因此调用close()方法。由于某种原因,它无法看到弹出窗口。
答案 0 :(得分:2)
我用以下内容修复了它:
var ed = parent.tinymce.editors[0];
ed.windowManager.windows[0].close();
所以,现在我的jQuery代码如下所示:
$('.image_choice').bind('click', function(){
var image_url = $('.image_choice:checked').val();
var insert_url = '<img src="/editor/uploads/' + image_url + '">';
parent.tinymce.activeEditor.selection.setContent(insert_url);
var ed = parent.tinymce.editors[0];
ed.windowManager.windows[0].close();
});
我希望这可以帮助遇到同样问题的人。这个让我困惑了几天。
答案 1 :(得分:0)
如果您的网页有两个以上的TinyMCE编辑器,则可以使用此代码:
tinymce.activeEditor.windowManager.close();
我将它用于TinyMCE 4。
答案 2 :(得分:0)
我也在与此斗争。我试图为MVC实现TinyMCE 4:http://www.roxyfileman.com/。
更改此代码有助于我:win.tinyMCE.activeEditor.windowManager.close(); / win.tinyMCE.activeEditor.windowManager.windows [1] .close();
在我选择文件的情况下,错误的弹出窗口会关闭。也许对某人有帮助;)
答案 3 :(得分:-2)
尝试使用代码`
<script type="text/javascript">
var parentWin = (!window.frameElement && window.dialogArguments) || opener || parent || top;
$(function() {
$('img').click(function(e){
e.preventDefault();
imgSrc = $(this).attr('src');
imgAlt = $(this).attr('alt');
divInput = $("input#"+parentWin.inputSrc,parent.document).parent().attr('id');
divInputSplit = divInput.split("_");
divTitle = "mce_"+(parseInt(divInputSplit[1],10) +1);
$("input#"+parentWin.inputSrc,parent.document).val(imgSrc);
$("input#"+divTitle,parent.document).val(imgAlt);
$(".mce-close",parent.document).last().trigger("click");
});
});
</script>