tinymce风格的问题

时间:2010-06-10 11:58:26

标签: javascript css tinymce

我不确定为什么但是tinymce删除了所有

<style>
...
</style>
textarea中的

信息

我该怎么办? 10X

3 个答案:

答案 0 :(得分:1)

记录CKEditor不是TinyMCE的继承者,只是竞争对手。

您可以通过将“样式”指定为TinyMCE验证配置中允许的标记之一来将样式标记保留在内容中。只需添加:

extended_valid_elements: "style"

到你传递给init的配置。

答案 1 :(得分:0)

<style>标记在文档正文中无效。

有可能以某种方式保护他们(至少在其继承者CKEDitor中,请参阅here并搜索protectedSource),但主要问题应该是:他们为什么在那里?

答案 2 :(得分:0)

如果您使用WYSIWYG TinyMCE或CKEditor以及框架CodeIgniter版本&gt; 2.0,则可能会出现消除样式属性的问题。

您可以在提交表单后设置样式。

地狱是什么样式=“”?

您可能在config.php文件中启用了此选项:

$config['global_xss_filtering'] = TRUE;

禁用全局过滤后,WYSIWYG不会丢失样式。

就个人而言,我不想禁用此功能,所以我做了一个解决方法; o)

根据Bart的建议编辑,不要弄乱核心文件; o)

出于某种原因添加了这个安全性,所以为了不完全摆脱它,我创建了一个数组,用于存储不删除标记样式的地址。

  

您需要创建MY_Security.php文件作为核心安全性的扩展   class并添加修改后的函数_remove_evil_attributes。

protected function _remove_evil_attributes($str, $is_image){
  // All javascript event handlers (e.g. onload, onclick, onmouseover), style, and xmlns
  $allowed = array("your allowed url's without domain like '/admin/edittext/'");
  if(in_array($_SERVER['REQUEST_URI'],$allowed)){
    $evil_attributes = array('on\w*', 'xmlns');
  }else{
    $evil_attributes = array('on\w*', 'style', 'xmlns');
  }

  if ($is_image === TRUE){
    /*
    * Adobe Photoshop puts XML metadata into JFIF images, 
    * including namespacing, so we have to allow this for images.
    */
    unset($evil_attributes[array_search('xmlns', $evil_attributes)]);
  }

  do {
    $str = preg_replace(
      "#&lt;(/?[^&gt;&lt;]+?)([^A-Za-z\-])(".implode('|', $evil_attributes).")(\s*=\s*)([\"][^&gt;]*?[\"]|[\'][^&gt;]*?[\']|[^&gt;]*?)([\s&gt;&lt;])([&gt;&lt;]*)#i",
      "&lt;$1$6",
      $str, -1, $count
    );
  } while ($count);
  return $str;
}

来源:http://blog.codebusters.pl/en/codeigniter-202-tinymce-or-ckeditor-style-attribute-lost-after-update/#comment-543