当前位置: 首页 > news >正文

C#结合JS 修改解决 KindEditor 弹出层问题

目录

问题现象

原因分析

范例运行环境

解决问题

修改 kindeditor.js

C# 服务端更新

小结


问题现象

KindEditor 是一款出色的富文本HTML在线编辑器,关于编辑器的详细介绍可参考我的文章《C# 将 TextBox 绑定为 KindEditor 富文本》,这里我们讲述在使用中遇到的一个问题,在部署到某些 WEB 应用项目中,点击类似弹出层功能时,只显示了遮罩层,而内容层则定位无法正确显示,下面所列是一些有关弹出层的功能,正确显示如下图:

 

 

但某些时候,会只显示遮罩层,无法显示弹出层,如下图:

原因分析

在浏览器显示内容中右击审查元素(360极速,edge则为检查元素),如下图:

发现遮罩层输出正常,为绝对定位,并设置正确了 left 、top、width、height 值,但排查到 css class 为 ke-dialog 的弹出层时,发现 position 定位缺失了 top 值,这应该是弹出层问题之所在。

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.0 或以上

KindEditor version 4.1.7 (2013-04-21)

开发工具:VS2019  C# 

解决问题

修改 kindeditor.js

如下图,我们发现遮罩层的 z-index 值为 811212,弹出层的 z-index 值为 811213:

因此打开 kindeditor.js 核心文件进行查找修改,该文件存在于插件应用的根目录:

按 811213 进行查找,发现如下图代码:

可试图在 options 选项里增加初始的 top 属性值为 '100px',保存文件再试。 

C# 服务端更新

 在我的文章《C# 将 TextBox 绑定为 KindEditor 富文本》里我们创建了 KindEditor 类,可修改类代码,通过时间戳引入更新后的js版本,重写后的代码如下:

public class KindEditor{Page CurrentPage = null;public KindEditor(object page){if (page == null){return;}CurrentPage = (Page)page;}public string init(string[] idList){return init(idList, null);}public string init(string[] idList,Literal writeControl){TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);string timestamp= Convert.ToInt64(ts.TotalSeconds).ToString();HtmlLink cssLink = new HtmlLink();cssLink.Attributes.Add("rel", "stylesheet");cssLink.Href = "/common/kindEditor/themes/default/default.css";CurrentPage.Header.Controls.Add(cssLink);HtmlLink cssLink2 = new HtmlLink();cssLink2.Attributes.Add("rel", "stylesheet");cssLink2.Href = "/common/kindEditor/plugins/code/prettify.css";CurrentPage.Page.Header.Controls.Add(cssLink2);HtmlGenericControl sc = new HtmlGenericControl("script");sc.Attributes.Add("charset", "uft-8");sc.Attributes.Add("src", "/common/kindEditor/kindeditor.js?v="+timestamp);CurrentPage.Page.Header.Controls.Add(sc);HtmlGenericControl sc2 = new HtmlGenericControl("script");sc2.Attributes.Add("charset", "uft-8");sc2.Attributes.Add("src", "/common/kindEditor/lang/zh_CN.js");CurrentPage.Page.Header.Controls.Add(sc2);HtmlGenericControl sc3 = new HtmlGenericControl("script");sc3.Attributes.Add("charset", "uft-8");sc3.Attributes.Add("src", "/common/kindEditor/plugins/code/prettify.js");CurrentPage.Page.Header.Controls.Add(sc3);string js = fLoadFromFile(CurrentPage.Request.PhysicalApplicationPath + "common/kindEditor/init.js", Encoding.Default);HtmlGenericControl sc4 = new HtmlGenericControl("script");foreach (string id in idList){sc4.InnerHtml += js.Replace("{0}", id);}CurrentPage.Page.Header.Controls.Add(sc4);return "";}public string LoadFromFile(string PathFile,System.Text.Encoding encodtype){FileStream fs;StreamReader newsfile;String linec,x_filecon="";fs=new FileStream(PathFile,FileMode.Open);newsfile=new StreamReader(fs,encodtype); try{linec=newsfile.ReadLine();while(!(linec==null)){x_filecon+=linec+"\r\n";linec=newsfile.ReadLine();}newsfile.Close();fs.Close();}catch(Exception){newsfile.Close();fs.Close();}finally{newsfile.Close();fs.Close();}return x_filecon;}//LoadFromFile Function}

在 init 方法中生成时间戳变量 timestamp, 并在服务端 header 修改 sc.Attributes.Add("src", "/common/kindEditor/kindeditor.js?v="+timestamp);  的时间戳版引用,以便于调试修改和刷新。至此问题解决。 

小结

在调试成功完成后,可关闭时间戳版本引用方法以进行缓存操作,防止每次都重新加载文件内容。

关于弹出层显示如果不修改代码,还可以使用一种消极方法进行操作,即点击其全屏功能,如下图:

全屏后兼容性比较好,未出现弹出层定位不准的问题,但如果在整体操作界面上来说,来回的切换全屏模式比较繁琐。

到此关于修改解决 KindEditor 弹出层问题就介绍到这里,感谢您的阅读,希望本文能够对您有所帮助。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=gm5dcnyf0pvm

http://www.lryc.cn/news/377557.html

相关文章:

  • 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面
  • 【diffusers极速入门(三)】生成的图像尺寸与 UNet 和 VAE 之间的关系
  • react实现窗口悬浮框,可拖拽、折叠、滚动
  • 52【场景作图】空间感
  • SpringBoot系列之搭建WebSocket应用
  • RK3568技术笔记十四 Ubuntu创建共享文件夹
  • JavaScript 获取地理位置 Geolocation
  • android串口助手apk下载 源码 演示 支持android 4-14及以上
  • windows11 生产力工具配置
  • Nacos配置中心不可用会有什么影响
  • AI时代下的自动化代码审计工具
  • 不懂索引,简历上都不敢写自己熟悉SQL优化
  • C# 设置PDF表单不可编辑、或提取PDF表单数据
  • 面试篇-求两个有序数组的交集
  • Web爬虫-edu_SRC-目标列表爬取
  • 云原生周刊:Harbor v2.11 版本发布 | 2024.6.17
  • 低版本火狐浏览器报错:class is a reserved identifier
  • 掌握高等数学、线性代数、概率论所需数学知识及标题建议
  • value_and_grad
  • AI 已经在污染互联网了。。赛博喂屎成为现实
  • Linux系统安装ODBC驱动,统信服务器E版安装psqlodbc方法
  • 品牌对电商平台价格的监测流程
  • osgearth提示“simple.earth: file not handled”
  • hbuilderx如何打包ios app,如何生成证书
  • 扩散模型荣获CVPR2024最佳论文奖,最新成果让评估和改进生成模型更加效率!
  • 通过CSS样式来禁用href
  • 汽车传动系统为汽车动力总成重要组成部分 我国市场参与者数量不断增长
  • 智慧校园软件解决方案:提升学校管理效率的最佳选择
  • 数据结构之B数
  • 计算机基础必须知道的76个常识!沈阳计算机软件培训