一个神奇的问题

神奇的问题

在改之前旧代码的时候(jquery),碰到了一个神奇的问题。某个上传的功能,唯独在测试那里,无法使用会报一个json解析的错误。

     VM3845:3 Uncaught SyntaxError: Unexpected token '<'

      at new Function (<anonymous>)

      at Function.parseJSON (global.js?v=27e5e6221e333:3)

      at Object.success (list.js?t=1629342897044:85)

      at HTMLIFrameElement.uploadCallback (fileUpload.js:151)

      at HTMLIFrameElement.dispatch (global.js?v=27e5e6221e333:1)

      at HTMLIFrameElement.g.handle (global.js?v=27e5e6221e333:1)

一看代码发现会parseJSON一个字符串,这么看完全没问题。

debug过程

1、定位到报错的位置,先尝试复现这个问题。结果无论如何都无法在本地复现这个问题,本地尝试都是完全正常的。

2、怀疑是环境导致的问题(cookie,缓存等),在测试的电脑上用无痕模式打开,问题消失了,但是在正常浏览器通过清除cookie,缓存等方式问题依然存在。

3、在debug模式下,发现parseJSON传入的字符串中除了接口返回的信息前方多了一个display:none的div标签。

4、查看源码发现,这个上传会在上传结束后把一份iframe添加到body中去,并在iframe中写入上传返回的结果。当iframe加载结束的时候,调用上传完成的回调。(我实在不理解为什么要这么写)。

5、现在问题就转成了,为什么这个iframe当中会被添加了一个隐藏的div元素。

原因

因为之前自己也写过一个Chrome插件,知道插件会向页面当中插入一些元素(一般来说会用shadow元素去隔离)。所以猜测是插件影响到了。

让测试把他的一个录屏的Chrome插件删掉之后,果然问题解决了。

总结

你永远不知道会看到什么样奇怪的代码操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC? FOUC - Flash Of Unstyled ...
    MrThorn阅读 453评论 0 1
  • 0 HTML5相关 websocket WebSocket 使用ws或wss协议,Websocket是一个持久化的...
    可爱多小姐阅读 900评论 0 0
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,606评论 0 7
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 3,551评论 1 19
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 784评论 0 3