2010-06-22 74 views
6

如果浏览器启用了“增强的安全配置”,有没有什么方法可以告诉javascript?是否有可能在javascript中检测Internet Explorer增强安全配置?

我一直遇到问题,某些控件无法在动态加载的内容中工作。只有在Windows Server 2003/2008系统上运行的浏览器才会发生这种情况 - 即使将服务器添加到“受信任”区域时也是如此。

也许有人已经开发出一种方法来完成这个任务?

在此先感谢

回答

0

我想你可以看看在user agent string SV1。

+0

不幸的是,这并不能解决问题。根据Microsoft: http://msdn.microsoft.com/en-us/library/ms537503%28VS.85%29.aspx 字符串“SV1”仅由Internet Explorer 6使用。快速测试几台机器似乎证实了这一点。 – 2010-06-23 13:29:43

1

我不认为这是可能的,如果仍然存在,那么这可能迟早会被修复。

这种“额外安全性”的一个要点是让客户端拥有它,但不能被服务器检测到,从而让他们无法知道什么时候试图绕过它以及什么时候没有。

+0

我认为你可以很容易地检测到症状(scripts/activeX禁用),至少*在*第一个请求之后。我不认为这是一个错误。 – 2010-07-18 22:05:40

1

使用增强的安全配置时是否禁用JavaScript?

然后,如果您只想显示一条消息给用户,只需在普通html中显示消息并用javascript隐藏它,以便只有没有javascript的用户才能看到它。如果您需要在服务器端处理它(例如,输出您的网站的不同版本),只需包括javascript以将用户重定向到启用JavaScript的版本。没有javascript的用户将保留在非js页面上。

如果只有编写脚本的ActiveX被禁用,同样的方法适用,只需插入一个ActiveX和尝试“脚本”吧,如果失败的话,你可以重定向,显示消息等

上面当然没有按”不会检测到增强的安全配置本身,而是检测到启用时出现的症状。所以它可能无法区分使用增强安全配置的用户和简单禁用JS/ActiveX的用户,或者首先使用不支持脚本的浏览器。

1

不直接测试IE ESC,我们可以测试它的效果。

我发现使用ESC启用动态添加内容的onclick事件不会触发。 所以我直接测试这些事件。

var IEESCEnabled = true; 
 
var testButton = $("<button style=\"display: none;\" onclick=\"IEESCEnabled = false; alert('No problems here.');\">Test IE ESC</button>"); 
 
testButton.click(); 
 
if (IEESCEnabled) { 
 
    alert("We have a problem."); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

在我的应用程序这样的测试用户转发给解释他们问题的页面。它伴随着一个noscript元素来检查他们是否有JavaScript运行。

相关问题