我有一个脚本,用于将希伯来语中的字符串数组与网站上的某些希伯来语文本进行比较。除某些版本的Internet Explorer外,该脚本在所有浏览器中都能正常运行。我必须调试它的唯一方法是记录浏览器用户代理,但是当我尝试在同一个IE版本中重现问题时,一切似乎都能在我的本地机器上正常工作。
脚本的相关部分
var cities = ['אילת','ים המלח','תל אביב','באר שבע','חיפה','נתניה'];
if (pids.length) {
for (var i = 0; i < cities.length; i++) {
if (pids[0].search(cities[i]) > -1){
userinfo.city = cities[i];
break;
}
}
//for debugging
if (userinfo.city =='') log += navigator.userAgent;
}
我知道pids具有正确的值,因为脚本收集的所有其他信息都已正确处理。问题仅出在这个字符串搜索中。
以下是记录的用户代理示例:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; BRI/2)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; McAfee; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; rv:11.0) like Gecko
编辑:我意识到我没有充分解释脚本失败时会发生什么。当脚本失败时,userinfo.city为空。这在实践中不可能发生,因为pids [0]将始终具有其中一个值。
通过从DOM中抓取来检索pids [0]中的值。它包含的值是正确的,因为它在程序的其他部分中使用正常工作。
运行此脚本的站点的document.characterSet
是utf-8
该脚本以utf-8编码,并通过谷歌标记管理器加载。