Как да скрия лентата с инструменти на TinyMCE на Blur, без да деактивирам изцяло редактора за форматиран текст?

Опитвам се да скрия лентата с инструменти TinyMCE, когато потребител щракне върху друг елемент на страницата и напусне текстовата област (така по същество onBlur). Намерих решения, които ще деактивират функционалността на Rich Text Editor на Blur, но трябва само да скрия лентата с инструменти и да оставя дисплея с Rich Text (вместо обикновен текст с html тагове).

Всякакви предложения ще бъдат високо оценени... благодаря!

Ето какво имам сега: (използва външната лента с инструменти)

<html>
<head>
<!-- TinyMCE -->
<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
tinyMCE.init({
    mode : "textareas",
    theme : "advanced",
    plugins : "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",
    theme_advanced_buttons1 : "fontselect,fontsizeselect,|,bullist,numlist,|,outdent,indent,|,blockquote,image,code,|,fullscreen",
    theme_advanced_buttons2 : "bold,italic,underline,strikethrough,sub,sup,hr,|,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink",
    theme_advanced_buttons3 : "tablecontrols,|,charmap",
    theme_advanced_toolbar_location : "external",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true
});
</script>

</head>
<body>

<form method="post" action="somepage">
    <br />
    <br />
    <br />
    <br />
    <br />
    <textarea name="content1" id="content1" style="width: 500px;">
        This is some sample <b><u>content</u></b>.
    </textarea>
    <br />
    <br />
    <a href="/bgjavascript: void(0);" onclick="tinyMCE.getInstanceById('content1').toolbarElement.style.display = 'none'">Hide Toolbar</a>
</form>

</body>
</html>

person Rodney Blythe    schedule 09.12.2010    source източник


Отговори (3)


Следният код показва лентата с инструменти на фокус и я скрива, когато потребителят щракне някъде извън редактора. Това решение е тествано за Safari и Firefox, но трябва да работи и за Internet Explorer.

 tinyMCE.init({
    ...
    oninit : function() {//fires after editor is created
        // make toolbar draggable (not essential for this anwer)
        $(tinyMCE.getInstanceById('content1').toolbarElement).draggable();

        //hide toolbar when loosing focus
        var frame = ...//get hold of iframe element which contains editable region
        if(frame.contentDocument) {
             bindEvent(frame.contentDocument.body,"blur",function() {
                 tinyMCE.getInstanceById('content1').toolbarElement.style.display = 'none';
             });
        } else {
             bindEvent(frame,"blur",function() {
                 tinyMCE.getInstanceById('content1').toolbarElement.style.display = 'none';
        }
    }
  },
  ...
 });

Моята функция bindEvent е както следва:

 function bindEvent(target, eventName, fun) {
    if (target.addEventListener) {
       target.removeEventListener(eventName, fun, false);
       target.addEventListener(eventName, fun, false);
    } else {
       var name = "on"+eventName;
       target.detachEvent(name);
       target.attachEvent(name, function(){ fun(eventName); });
    }
 }

Надявам се това да ви помогне (или някой).

person Martijn Slob    schedule 20.08.2011

Това трябва да свърши работа

$('#' + ed.id + '_tbl '+'.mceToolbar').hide();

Като алтернатива можете да използвате престой (div) със следния клас

.layover {
    background: none repeat scroll 0 0 #FFFFFF;
    display: block;
    /*you will need to set this (and the following) parameters so that the tinymce instance will be fully covered*/
    height: 100%; 
    left: 0;
    opacity: 0.6;
    position: fixed;
    top: 0;
    width: 100%;
}
person Thariama    schedule 10.12.2010

person    schedule
comment
Това не обяснява как да открием размазването? - person andyzinsser; 10.08.2012