jQuery富文本插件跨浏览器兼容性问题:IE与其他浏览器表现相反
解决jQuery富文本编辑器跨浏览器兼容问题
嘿,这个跨浏览器的问题我之前也碰到过,核心是ASP.NET服务器控件的ID生成机制和IE的一些特性在搞鬼,给你几个实用的解决方案试试:
方案1:用Static模式统一控件ID(推荐)
如果你的项目是ASP.NET 4.0及以上版本,直接给你的TextBox控件加上ClientIDMode="Static"属性,这样服务器端生成的客户端ID就和你写的服务器ID完全一致,都是TxtBoxBody:
<asp:TextBox ID="TxtBoxBody" runat="server" ClientIDMode="Static"></asp:TextBox>
然后JS里统一用这行代码就行,不管IE还是Chrome都能正常识别:
$('#TxtBoxBody').richText();
这是最彻底的解决方式,从根源上消除了ID不一致的问题。
方案2:兼容旧版本ASP.NET的折中写法
要是你的项目还在用ASP.NET 4.0以下的老版本,没法用ClientIDMode,那就把两种选择器合并起来,让JS在所有浏览器都能匹配到控件:
$('#<%= TxtBoxBody.ClientID%>, #TxtBoxBody').richText();
这行代码会同时尝试两种ID选择器,不管哪种在当前浏览器生效,都能顺利初始化富文本编辑器。
方案3:强制IE用最新渲染模式
有时候IE会偷偷切换到兼容模式(比如Quirks模式),导致jQuery选择器或者插件的JS代码出问题。你可以在页面的<head>标签里加这么一行meta标签,强制IE用它支持的最高版本引擎渲染页面:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
这能避免很多因为兼容模式带来的奇怪BUG。
方案4:检查jQuery和插件的版本兼容性
旧版本的IE(比如IE8及以下)对高版本jQuery的支持很差,如果你的项目需要兼容这类老IE,建议把jQuery降级到1.x系列(比如1.12.4版本),这个版本对旧IE的兼容性做得很好,同时要确保富文本插件也支持这个jQuery版本。
内容的提问来源于stack exchange,提问作者Abhishek Jain
相关产品推荐
相关产品推荐

