/ ie

IE JS下一个奇怪的特(bu)性(g)

前一阵子统计一个站点的nginx访问日志时发现了大量的404请求,这些请求的url比较奇怪,都是以/undefined/img/开头的图片文件,这些请求还有一个共同点,那就是ua全部都是ie。

首先find一下图片的文件名,发现都是系统中用到的图片,是第三方登录的图片按钮,用不同浏览器去访问,发现只有确实只有较低版本(<=ie8)的ie浏览器会出现红叉叉。

搜索了下相关的代码,发现这些图片的url是用js拼接出来的,大概代码如下:

var static_file_url = window.static_file_url; html = '';

而window.static_file_url是在页面头部就赋值了的,也就是说,当拼接url的时候,static_file_url并不是window.static_file_url的值,而是未定义undefined,在ie中alert这个变量,确实是undefined。

同时我发现了另一个奇怪的现象,在同一个js文件中有ajax请求,url也是拼接出来的,大概样子如下:

var ajax_url = window.server_url; $.post(ajax_url, param, function(data){}, 'json');

而在这里的ajax请求却是正常的,alert(ajax_url)出来的值也是window.server_url的值。

这两个例子唯一的区别就是变量名,前者选择的变量名和window对象下的属性一致,而后者不一致,所以怀疑是这个地方的问题,于是写了一段测试代码

window.test_a = 'a'; window.test_b = 'b'; var test_a = window.test_a; var test_b2 = window.test_b; alert(test_a); // undefined alert(test_b2); // b

所以在ie下的这个特(bu)性(g)真是让人爱(i)不(e)释(qu)手(shi)

IE JS下一个奇怪的特(bu)性(g)
Share this