https页面中再次出现莫名的安全警告

简介:

   上个月费半天劲搞定了一个https页面中莫名其妙的安全警告,结果今天又被Tester逮到了一个。这个似乎比上一次哪个更有莫名其妙一点点,当然这个安全警告也是一个不能稳定复现的问题。从具体场景来看,说是IE的问题也行,说是实现上的问题似乎也可以。

    具体的出错场景是这样的:页面中有一个IFRAME做的模拟Editor。我们知道,使用元素的ContentEditable属性开启的编辑效果,在输入回车的时候,会默认产生一个<p></p>元素,而输入的内容默认都回被包围在<p>标签中。当我们在这个Editor中删除一行时,这个Editor也会默认帮我们删掉这个<p></p>元素,这样看来似乎是个透明的操作,没有什么问题。但是问题恰恰就来自于这个默认的删除。下面是这个Editor的部分截图:

    QueryEditor.png

    在这个编辑器中,当光标位于某一行上时,该行会被highlight。而这个highlight是通过修改Editor默认插入的P元素的style属性实现的,如上图效果。在移动光标的时候,如果有跨行的行为,也就是从一个P元素进入了另一个P元素,那么就会恢复原来highlight的那个元素,从新highlight新的元素,也就是有一个跟随光标所在位置highlight的效果。如果是移动光标位置,不管怎么操作都是没有任何问题的。可是当我们使用退格键删除一行的时候,我们刚才说了,Editor会自动把删除行的P元素也删掉(实际上是从DOM树中将其移走),这时如果我们再去修改这个已删除的P元素的Style的属性,那么IE就会跳出那个烦人的安全警告窗口(IE6和IE7皆有此问题)。

    这里说一下,虽然元素被删除,但是IE会默认缓存(保留该元素实例)一段时间,所以这时我们仍然可以访问这个被删除的元素,而不会出现运行时错误。当然被从DOM树中删除的元素也有自己的特点,就是它的parentElement会是null。这样我们就只需要在取消highlight的方法上加上对元素parentElement的判断就行了,修改ResumeLine方法的代码为:

None.gif function QueryEditor.ResumeLine(line)
ExpandedBlockStart.gif ContractedBlock.gif dot.gif{
InBlock.gif     if ( line &&  line.parentElement )
ExpandedSubBlockStart.gif ContractedSubBlock.gif     dot.gif{
InBlock.gif        line.runtimeStyle.borderColor = '';
InBlock.gif        line.runtimeStyle.backgroundColor = '';
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}

    虽然就这样解决了,不过仍感觉这类问题真是一波还未平息一波又来侵袭的定时炸弹啊。。。

本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
2月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
126 0
|
5月前
|
安全 算法 小程序
互联网并发与安全系列教程(17) - 生产环境配置HTTPS证书
互联网并发与安全系列教程(17) - 生产环境配置HTTPS证书
72 0
|
2月前
|
缓存 安全 应用服务中间件
HTTPS解密:安全通信的魔法之窗
HTTPS解密:安全通信的魔法之窗
40 0
|
3月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
342 0
|
3月前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
52 0
|
3月前
|
安全 网络协议 网络安全
HTTPS 存在哪些安全问题,有什么应对方案
HTTPS 是 HTTP 的安全版本,通过使用 SSL/TLS 协议对通信内容进行加密,提供了以下几个关键的安全特性:数据加密、身份认证和完整性保护。尽管 HTTPS 在很大程度上提高了安全性和数据传输的安全性,但仍然存在一些潜在的安全问题。以下是一些可能的问题以及相应的应对方案
|
4月前
|
安全 前端开发 算法
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
28 0
|
4月前
|
安全 前端开发 算法
前端知识(七)———HTTPS:保护网络通信安全的关键
前端知识(七)———HTTPS:保护网络通信安全的关键
23 0
|
4月前
|
存储 安全 算法
https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?
https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?
|
5月前
|
安全 数据安全/隐私保护
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
使用openssl 模拟ca进行证书的申请和颁发,并使用证书部署网站的安全连接访问,即https的加密通信
46 0