TinyMce imagemanager не будет генерировать путь к изображению при использовании с iframe - PullRequest
1 голос
/ 03 июня 2010

Я успешно настроил tinymce для работы на странице в iframe. Все отлично работает.

Однако, когда вы используете imagemanager для выбора изображения, которое будет вставлено или заменено в редакторе, оно не скопирует путь (и имя файла) изображения в поле «URL-адрес изображения» в поле «Вставить / редактировать изображение» , Поле останется пустым или сохранит адрес предыдущего изображения.

Поведение аналогично с плагином файлового менеджера.

tinyMCE.init(    
{    
    mode : "none",    
    editor_selector : "mceEditor",    
    theme : "advanced",    
    plugins : "filemanager,imagemanager,autoresize,safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,spellchecker",    
    theme_advanced_buttons1 : "insertfile,insertimage,advimage,imagemanager,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,nonbreaking,cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist",    
    theme_advanced_buttons2 : "blockquote,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,|,forecolor,backcolor,|,charmap,iespell,media,advhr",    
    theme_advanced_layout_manager : "SimpleLayout",    
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,strikethrough",    
    theme_advanced_buttons4 : "styleselect,formatselect,fontselect,fontsizeselect,|,undo,redo,|,spellchecker",    
    theme_advanced_toolbar_location : "external",    
    theme_advanced_toolbar_align : "left",    
    theme_advanced_statusbar_location : "bottom",    
    relative_urls : true,    
    document_base_url : "http://xxxxxxxxxxx.com/",    
    auto_resize : true,    
    content_css : "/custom/css/style.css",    
    extended_valid_elements : "iframe[height|width|src|frameborder|scrolling]",    
});    

/*    
    The following code comes from- http://tinymce.moxiecode.com/punbb/viewtopic.php?id=12966    
    Without it the editor only loads 10% of the time. With it, it's pretty much 100% consistent.    
    The other changes mentioned in the post have also been implemented.    
*/    
var setupTiny = function()    
{    
    var ifrObj = document.getElementById('pageEditIFrame');    
    var win = ifrObj;    
    if (win.contentWindow)    
    {    
        win = win.contentWindow;    
    }    

    var d;    
    if(ifrObj.contentDocument)    
    {    
        d = ifrObj.contentDocument;    
    }    
    else if (ifrObj.contentWindow)    
    {    
        d = ifrObj.contentWindow.document;    
    }    
    else if (ifrObj.document)    
    {    
        d = ifrObj.document;    
    }    

    textAreas.each(function(txtEl)    
    {    
        tinyMCE.execCommand('mceAddFrameControl', false,    
        {    
            element_id : txtEl,    
            window : win,    
            doc : d    
        });    
    });    
};    

//Waiting 1 second seems to make the editor load more reliably.    
setTimeout("setupTiny();",1000);

1 Ответ

1 голос
/ 28 сентября 2010

Я столкнулся с подобной проблемой, которая появляется только в более поздних версиях Firefox - Chrome и IE работают нормально для меня. Не уверен, что это точно такая же проблема (я не использую iframes), но она выглядит так же.

Вот где я нашел свое решение: http://tinymce.moxiecode.com/punbb/viewtopic.php?id=23302

Как вы можете прочитать, один из кодировщиков TinyMCE считает, что это ошибка в FF, хотя исправления выглядят скорее как tiny_mce, при условии, что в Firefox все еще существует ошибка, исправленная в какой-то момент в 3.5. Вот решение, которое сработало для меня (цитата из поста):

1) Перейти к tiny_mce.js

2) Найдите эту строку: this.isGecko = ua.indexOf('Gecko') != -1;

под ним добавить:

this.isGecko369 = (this.isGecko && ua.indexOf('irefox/3.6.')!= -1 && parseInt(ua.substr(ua.indexOf('irefox/3.6.')+11,2)) >= 9);
this.isGecko369 = (this.isGecko369 || (this.isGecko && ua.indexOf('irefox/3.5.')!= -1 && parseInt(ua.substr(ua.indexOf('irefox/3.5.')+11,2)) >= 9 ) );

3) Найдите эту строку: fixGeckoBaseHREFBug : function(m, e, h) {

ниже этой строки: if (tinyMCE.isGecko) { измените его на: if (tinyMCE.isGecko && !tinyMCE.isGecko369) {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...