我在尝试调试由几个月前离开公司的人开发的 ASP.NET + jQuery + jQueryUI Web 应用程序时遇到了一个奇怪的问题。
问题:
为了进行开发,我们使用 Windows Server 2008 R2 虚拟机或 Windows Server 2003 R2 虚拟机,它们都通过终端服务由所有开发人员共享,并由我们的 IT 部门控制。
它们都配备了 Internet Explorer 8,并增强了安全性。
当我尝试调试应用程序或尝试在测试站点上导航它时,某些 JavaScript 功能无法正常工作。
其中之一是 jQueryUI 的日期选择器:日历打开,但是当我单击日期时没有任何反应。
我已经添加了两个http://localhost
并在 Internet Explorer 受信任站点中测试站点,但无济于事;如果我从受信任的站点列表中删除它们(因此它们在互联网区域中运行),则不会执行 JavaScript。
问题:
这个问题是否是Windows增强的安全性导致的?
如果不是,我可以做什么来缩小罪魁祸首的范围?
我知道这种问题应该由 IT 团队解决,但他们不太关心这个问题,而且我陷入了困境,因为我无法重现仅在 Internet Explorer 中发生的几个错误(这个 JavaScript 阻塞问题是阻止我甚至触及错误),并且我无法回复我们的用户“抱歉,但我们不会解决问题,因为 IT 不关心我们”。
是的,我可以向我的经理升级这个问题,但是你知道官僚主义是多么严重,需要几天甚至几周的电子邮件才能解决这个问题。所以我想,如果我能缩小问题的范围,也许我可以避免一些空洞的争论。
一个例子:
我制作了一个简单的 HTML 页面来重现该问题:
<!DOCTYPE html>
<html>
<head>
<link href="jquery-ui.css" rel="stylesheet" />
<script src="jquery.min.js"></script>
<script src="jquery-ui.min.js"></script>
<script>
$(document).ready(function () {
$("#dynamicText").text("Some dynamic text."); // <-- Works.
$("#date").datepicker(); // <-- Does NOT work.
$("#button").button(); // <-- Works.
$("#button").click(function (event) {
event.preventDefault(); // <-- Works.
alert("You clicked the button."); // <-- Works.
});
});
</script>
<title>Test</title>
</head>
<body>
<h1>Test</h1>
<table>
<thead>
<tr>
<th>Function</th>
<th>Demo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Dynamic text:</td>
<td id="dynamicText"></td>
</tr>
<tr>
<td>Date picker:</td>
<td><input id="date" type="text" /></td>
</tr>
<tr>
<td>Button:</td>
<td><a id="button" href="https://encrypted.google.com/">Click me</a></td>
</tr>
</tbody>
</table>
</body>
</html>
Update:
我忘了说我发现了这个链接在 TechNet 上,但它没有提到什么样的的脚本将被阻止(因为并非所有脚本都被阻止,我迷路了),互联网上几乎每个结果都解释了如何禁用增强的安全性,但没有解释它的作用。
任何提示表示赞赏...:\