【问题标题】:A bookmarklet to disable the tinymce visual editor?禁用 tinymce 可视化编辑器的小书签?
【发布时间】:2011-09-20 15:12:42
【问题描述】:

我正在寻找一个书签来禁用 tinymce 可视化编辑器。也就是说,可以将一些代码粘贴到地址栏中以禁用编辑器(也可以添加书签)。

有人有什么想法吗?

我要使用它的页面使用的是旧版本的 TinyMce,我认为该页面使用的版本相同:http://www.imathas.com/editordemo/demo.html

重申一下,我想删除 TinyMce 编辑器并离开 textarea。

如果您想查看我所说的功能,您还可以访问此示例页面:http://www.matracas.org/sentido/tinymce/examples/full.html 并单击编辑器下方的启用/禁用按钮。

这里的问题是语法依赖于知道将什么编辑器 id 放入 .get() 函数中。

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

小书签最好只使用 tinMCE 的显示/隐藏功能,但它适用于页面上的所有编辑器。

【问题讨论】:

  • 是否有一个特定的页面你想摆脱它?
  • @gGreg Guida - 我添加了一个指向问题的链接,其中显示了我希望使用小书签的页面。

标签: javascript tinymce bookmarklet


【解决方案1】:

我用 jQuery 开始我所有的小书签,尽管这可能会更好地作为一个油脂猴脚本,这取决于你想要做什么。

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(); }

【讨论】:

  • 如果你想在 chrome 中做一个greasemonkey 脚本,你必须将jQuery 源代码直接粘贴到你的greasemonkey 脚本中。如果您禁用 tinymce 的页面与控件有关,您可能需要修改此选择器。
  • 这实际上似乎不起作用,因为我已经对其进行了测试。看起来它一起删除了编辑器,我只想让它禁用tinymce部分并离开文本框。我已经用链接更新了问题。
【解决方案2】:

给你!

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

看起来更令人愉悦,但代码相同:

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

【讨论】:

  • 这看起来像我希望的很棒的代码,只是得到这个错误:TypeError: Object.keys is not a function ?
  • 看起来我们必须在此处添加兼容性部分的代码,然后它应该可以工作。 developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… - 也许这是因为我还在 FF 3.6 上。
  • @cwd:我确实几乎只使用 Chrome,但我认为 Object.keys 不是特定于浏览器的......很高兴你找到了解决方法 :)
【解决方案3】:

我在我的书签收藏中添加了一个 TinyMCE 去除器: http://richardbronosky.github.com/Perfect-Bookmarklets/tinymce.html

与我见过的其他产品相比,它有一个主要优势。它将 textarea 的内容恢复到源中的内容。我不知道其他人是否经历过这种情况,但我们的 CMS 和 TinyMCE 有一个网络管理员,删除后代码会被更改。我已经解决了这个问题。

代码如下:

  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
  }

也在 github 上: https://github.com/RichardBronosky/Perfect-Bookmarklets/blob/master/tinymce.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多