最近几天,社区这里我被搞死了。短消息阅读后无法标志已阅读。帖子无法揭帖,无法删除帖子...........
那里的代码几年没动过了,查看代码,就是一些脚本、Html代码没有被加载,被屏蔽了。
为了这一系列的问题,整天被人骂。临时解决方法就是把代码换个位置就好了。
昨天再细看代码的时候,才找到愿因。
一个被包含的很深的js文件中。有个家伙写了一个很低级的JavaScript 代码。
下面是错误的伪代码:
1、document.write("<script src=/"......./"></script>");
2、document.write("<iframe width=0 height=0 border=0 src=/"......./">");
第一行的错误是:
浏览器看到 </script> 就认为这些脚本已经结束了,后面的不是脚本了。后面的脚本不会以脚本方式执行,而是以Html方式展示。
而不论这个</script>是否是在一个字符串中。
正确的写法应该是
document.write("<script src=/"......./"></sc"+"ript>");
在</script>中随便找一个位置截断,变成两个字符串的相加。
第二行的错误是:
没有 </iframe> 这样的结束符,后面的任何代码,不论是Js,还是Html,都不会被浏览器加载。
这里包含很深指:
一个 js 文件中 有
document.write("<script src=/"aaa.js/"></scr"+"ipt>");
这样的代码,然后这个 aaa.js 文件中,又包含一个 bbb.js 文件,依次类推,好几层。