博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决TinyMCE不能插入媒体播放器的问题
阅读量:4635 次
发布时间:2019-06-09

本文共 1967 字,大约阅读时间需要 6 分钟。

在使用TinyMCE插入媒体代码时,会把原始的HTML替换为img标签,并且把原始数据转换为json格式的数据,例如:
 
原始HTML片段:

TinyMCE格式化后的HTML片段:
到官网以及stackoverflow查了半天,类似问题的解决方案貌似是配置TinyMCE的valid_elements属性,但我试过都不管用。
 
最终的解决办法是采取了一种曲线救国的方式,大致思路如下:
  1. 采用HtmlAgilityPack来解析获取到的编辑器内容。
  2. 提取其中匹配的视频元素
  3. 替换该元素,使用格式化后标准的HTML媒体元素,例如<object>
关键点:
1,XPATH表达式 //img[@class="mceItemMedia mceItemFlash"]
2,json字符串到.net对象的转换,不想单独定义,试了下json to dynamic类型,竟然是ok的,看来json.Net这个类库很强大。
 
贴上转换部分的代码,在有多个匹配元素的情况下,采用遍历HtmlAgilityPack.HtmlNode的方式一直没成功,不知道是我没用对,还是HtmlAgilityPack的问题,最终是采用了字符串替换的方式。
private string HandleMediaContent(string content)        {            var reStr = string.Empty;            reStr = content;                        string template = "";            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();            doc.LoadHtml(content);            var vNodes = doc.DocumentNode.SelectNodes("//img[@class=\"mceItemMedia mceItemFlash\"]");            if (vNodes == null)                return content;            for (var i=0;i
t.Name == "data-mce-json"); var width = vNodes[i].Attributes.FirstOrDefault(t => t.Name == "width"); var height = vNodes[i].Attributes.FirstOrDefault(t => t.Name == "height"); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject
(attr.Value); var newNodeDocument = new HtmlAgilityPack.HtmlDocument(); newNodeDocument.LoadHtml(string.Format(template,width.Value,height.Value,obj.@params.src,obj.@params.src)); //parent.InsertBefore(newNodeDocument.DocumentNode, vNodes[i]); //parent.RemoveChild(vNodes[i]); reStr = reStr.Replace(vNodes[i].OuterHtml, newNodeDocument.DocumentNode.OuterHtml); } //return doc.DocumentNode.OuterHtml; return reStr; }

 

 

转载于:https://www.cnblogs.com/qiuliang/archive/2012/11/19/2778182.html

你可能感兴趣的文章
继续教育学习脚本
查看>>
改装摩托车
查看>>
Html.Partial和Html. RenderPartial用法
查看>>
[转载]聊一聊人员培养
查看>>
判断ic卡类型
查看>>
开源Java反编译工具
查看>>
navigator.geolocation的应用 - 将定位信息显示在百度地图上
查看>>
数据结构与算法-概念
查看>>
C学习笔记-字符串
查看>>
PHP-curl
查看>>
Jquery 多行拖拽图片排序 jq优化
查看>>
文件分割机
查看>>
shell的交互式和非交互式登录
查看>>
【转载】ASP.NET自定义404和500错误页面
查看>>
定长顺序串的实现
查看>>
使用var声明的变量 和 直接赋值并未声明的变量的区别
查看>>
[读书笔记]TCP/IP详解V1读书笔记-3
查看>>
Just a Hook HDU - 1698
查看>>
Polo the Penguin and Matrix
查看>>
简评知乎的优点与不足
查看>>