Javascript 通过运行条件编译防止JS暴露IE浏览器

Javascript 通过运行条件编译防止JS暴露IE浏览器,javascript,internet-explorer,browser,activex,Javascript,Internet Explorer,Browser,Activex,下面的JS代码可以显示您的浏览器是否为IE var isIE = /*@cc_on!@*/!1; 有没有一种方法可以在不禁用javascript的情况下防止这种行为?根据对该问题的评论确定的最终目标是查看是否有一种方法可以“隐藏”浏览器的身份,使其不受javascript的任何检查,从而帮助创建完全匿名的自定义浏览器 我觉得这几乎是不可能的,因为浏览器提供的所有提示都显示了它的真实身份 对于Internet Explorer,这里只是(只读)属性值的一个示例,这些值指示浏览器是Internet

下面的JS代码可以显示您的浏览器是否为IE

var isIE = /*@cc_on!@*/!1;

有没有一种方法可以在不禁用javascript的情况下防止这种行为?

根据对该问题的评论确定的最终目标是查看是否有一种方法可以“隐藏”浏览器的身份,使其不受javascript的任何检查,从而帮助创建完全匿名的自定义浏览器

我觉得这几乎是不可能的,因为浏览器提供的所有提示都显示了它的真实身份

对于Internet Explorer,这里只是(只读)属性值的一个示例,这些值指示浏览器是Internet Explorer

//This could be any element
var bStyle = document.body.style;
for(var x in bStyle){
  console.log(x + ':' + bStyle[x]);
}
这将返回以下属性(ms是Microsoft属性的前缀):

还有几十个IE专用的API,人们可以检查这些API是否会泄露IE

console.log(typeof(window.createPopup));
//>> function in IE, undefined in other browsers

console.log(typeof(document.body.currentStyle));
//>> object in IE, undefined in other browsers
然后是所有的IE专有技术。。。Active-X、VML、XML数据孤岛、VBScript、行为、CSS表达式等都提供了浏览器实际上是internetexplorer的指标


我个人不使用它,但背后的想法似乎是更好的方法。。。匿名化您的“跟踪”,而不是实际使用的浏览器。

即使您可以禁用此行为,也要检测到这一点。我一步一步地做:)您的最终目标是什么?作为一名长期的网络开发人员,我可以想出几十种方法,一个“网络视图”可以向我揭示它是Internet Explorer。。。甚至更多的是通过代码。我认为这是一个毫无希望的任务。@scunlife的最终目标是一个完全匿名的自定义IE。消除这种浏览器嗅探是它的重要组成部分。除了使用ua字符串、条件编译、documentMode、clientCaps和其他一些方法之外,没有更多的方法来检测它。为什么你把它称为无影无踪?米洛斯,我认为它是无望的,因为每个浏览器I/Firefox / Chros/Safari / Opera等都给出了关于它实际上是哪个浏览器的各种提示。我可以运行JavaScript,它会告诉我浏览器是不是IE7、IE8、IE9、IE10、IE11等等。人们甚至可以检测到它是不是在桌面上运行的Windows8上的IE11。。。或在平铺的“地铁模式”。每个浏览器的封面下都有数百个指示器。
console.log(typeof(window.createPopup));
//>> function in IE, undefined in other browsers

console.log(typeof(document.body.currentStyle));
//>> object in IE, undefined in other browsers