Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止tinymce剥离';风格';来自输入元素的属性?_Tinymce - Fatal编程技术网

如何防止tinymce剥离';风格';来自输入元素的属性?

如何防止tinymce剥离';风格';来自输入元素的属性?,tinymce,Tinymce,我已经看了几个小时的官方文件和博客帖子,肯定答案已经在某个地方发布了。。但是没有运气 似乎再多的摆弄配置也无济于事。阻止tinymce剥离我的输入/提交的元素上的内联“style”属性。我需要所有输入元素的“style”属性。。但我只是从使用进行测试开始,以使其正常工作 tinymce版本3.5b3 这是我的配置的最新迭代。(在许多变化/尝试中): tinyMCE.init({ 模式:“文本区域”, 主题:“高级”, 插件:“情感、拼写检查、advhr、insertdatetime、预览、粘

我已经看了几个小时的官方文件和博客帖子,肯定答案已经在某个地方发布了。。但是没有运气

似乎再多的摆弄配置也无济于事。阻止tinymce剥离我的输入/提交的
元素上的内联“style”属性。我需要所有输入元素的“style”属性。。但我只是从使用
进行测试开始,以使其正常工作

  • tinymce版本3.5b3
这是我的配置的最新迭代。(在许多变化/尝试中):

tinyMCE.init({
模式:“文本区域”,
主题:“高级”,
插件:“情感、拼写检查、advhr、insertdatetime、预览、粘贴、表格、媒体、方向性、样式、xhtmlxtras、非中断、分页中断”,
主题_高级_按钮1:“保存、新建文档、|、粗体、斜体、下划线、删除线、|、左对齐、居中对齐、右对齐、全对齐、格式选择、字体选择、字体大小选择”,
主题|高级|按钮2:“剪切、复制、粘贴、粘贴文本、粘贴文字、粘贴文字、插入日期、插入时间、预览、块引号、缩进、撤消、重做、链接、取消链接、锚定、图像、清理、帮助、代码、插入日期、插入时间、预览、前景色、背景色”,
主题|高级|按钮3:“表格控件、|、hr、removeformat、visualaid、|、sub、sup、|、charmap、情感、iSpell、媒体、advhr、|、ltr、rtl”,
主题高级按钮4:“styleprops,|,cite,abbr,缩写,del,ins,attribs,|,nonbreak,pagebreak”,
主题\高级\工具栏\位置:“顶部”,
主题\高级\工具栏\对齐:“左”,
主题\高级\状态栏\位置:“底部”,
主题\u高级\u大小调整:正确,
doctype:“”,
转换URL:false,
//模板\u外部\u列表\u url:“gen4tinymce/lists/template\u list.js”,
外部链接列表url:“gen4tinymce/lists/link\u list.js”,
//媒体列表url:“gen4tinymce/lists/media\u list.js”,

有效的元素:“@[id|class|style|title|dir表明您对tinymce的配置是绝对完美的:所有元素都允许使用style属性,它不会被剥离出来。

正如Thariama指出的,tinymce没有错。。但我不知道所有CodeIgniter的
$config['global\u xss\u filtering']=TRUE;
正在进行。如果您发现您遇到了相同的问题,以下是我解决问题的方法;请参阅此处:
.

您可以尝试使用ajax请求,如下所示

$("#submit").click(function(e) {
    ie8SafePreventEvent(e);
    var form_data = $("#form").serialize();
    var content = $.base64.encode(tinyMCE.activeEditor.getContent());
    $.ajax({
        type: "POST",
        url: "/your/post/processor",
        data: form_data + "&coded_content=" + content,
        success: function(return_msg){
            do_something
            },
        error: function(){
            alert("Sorry, we got an error, try later");
            }
        });
    });

显然,在您的控制器中,您必须对其进行Base64解码…

我也在使用CodeIgniter,同时设置了
$config['global\u xss\u filtering']=false;
我仍然存在style属性的问题。因此,如果没有任何解决方案适合您,您可以尝试在提交时在base64中对tinyMCE数据进行编码,并使用Javascript将其放置在隐藏字段中:

$('#hiddenField').val(window.btoa(tinyMCE.get('tinyMCEtextareaID').getContent()));
通过这种方式,您可以保留原始字符串,并且可以使用以下方法在PHP中轻松解码:

$htmlstring = base64_decode($_POST['hiddenField']);

是的,我把整个东西都剥离出来作为一个测试。只隔离tinymce,它就如你所说和所展示的那样工作。所以我需要弄清楚剥离style属性是什么…我正在使用的PHP框架,CodeIgniter,或者什么。我会回到这里接受你的答案。我只是暂时把它打开,以防有人发布任何东西这为我节省了更多的时间找出罪魁祸首所在。-)不要使用CodeIgniter,它是最糟糕的PHP框架之一;)
$htmlstring = base64_decode($_POST['hiddenField']);