开发者

A bookmarklet to disable the tinymce visual editor?

I'm looking for a bookmarklet to disable the tinymce visual editor. This is to say, some code that could be pa开发者_高级运维sted into the address bar to disable the editor (and also bookmarked).

Anyone have any ideas?

The page I want to use it on is using an older version of TinyMce, I think the same version that is used on this page: http://www.imathas.com/editordemo/demo.html

Just to reiterate, I want to remove the TinyMce editor and leave the textarea.

If you would like to see the functionality I am talking about, you could also visit this example page: http://www.matracas.org/sentido/tinymce/examples/full.html and click on the enable / disable buttons below the editor.

The problem here is that the syntax relies on knowing what editor id to put into the .get() function.

tinyMCE.get('elm1').hide();
tinyMCE.get('elm1').show();

The bookmarklet would ideally just use tinMCE's show / hide functionality, but it would work for all editors on a page.


Here you go!

javascript:(function(){var arr=Object.keys(tinyMCE.editors);for(var i=0;i<arr.length;i++){try{tinyMCE.editors[arr[i]].remove();}catch(e){}}})()

More visibly pleasing, but same code:

javascript:
(function(){
  var arr=Object.keys(tinyMCE.editors);
  for(var i=0;i<arr.length;i++){
    try{
      tinyMCE.editors[arr[i]].remove();
    }
    catch(e){
    }
  }
}
)()


I start all my bookmarklets with jQuery, although this may work better as a greasemonkey script depending on what you're trying to do.

javascript:
function loadScript(url, callback){
        var head = document.getElementsByTagName("head")[0];
        var script = document.createElement("script");
        script.src = url;

        var done = false;
        script.onload = script.onreadystatechange = function()        {
                if( !done && ( !this.readyState 
                                        || this.readyState == "loaded" 
                                        || this.readyState == "complete") )
                {
                        done = true;

                        callback();

                        script.onload = script.onreadystatechange = null;
                        head.removeChild( script );
                }
        };

        head.appendChild(script);
}

loadScript("http://code.jquery.com/jquery-latest.js", function(){
    jQuery('.mceEditor').remove(); }


I have added a TinyMCE remover to my bookmarklet collection: http://richardbronosky.github.com/Perfect-Bookmarklets/tinymce.html

It has one major advantage over the others I have seen. It restores the content of the textarea back to what was in the source. I don't know if others have experienced this, but we have a web admin to our CMS and TinyMCE, when removed leaves the code altered. I have resolved this.

Here is the code:

  for(var i=0;i<tinymce.editors.length;i++){
    var tmpId=tinymce.editors[i].id;
    var tmpVal=document.getElementById(tmpId).value;
    tinyMCE.execCommand("mceRemoveControl",true,tmpId);
    document.getElementById(tmpId).value=tmpVal
  }

Also on github: https://github.com/RichardBronosky/Perfect-Bookmarklets/blob/master/tinymce.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜