我在尝试调试 ASP.NET + jQuery + jQueryUI 网络应用程序时遇到了一个奇怪的问题,该应用程序是由几个月前离开公司的人开发的。
问题:
为了进行开发,我们使用 Windows Server 2008 R2 虚拟机或 Windows Server 2003 R2 虚拟机,它们都由所有开发人员通过终端服务共享并由我们的 IT 部门控制。
它们都带有 Internet Explorer 8,并具有增强的安全性。
当我尝试调试应用程序或尝试在测试站点上导航时,某些 JavaScript 函数无法正常工作。
其中之一是 jQueryUI 的日期选择器:日历打开,但当我点击日期时没有任何反应。
我已经在 Internet Explorer 的受信任站点中添加了 http://localhost
和测试站点,但是没有用;如果我将它们从受信任的站点列表中删除(因此它们在 Internet 区域中运行),则不会执行任何 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>
更新:
我忘了说我找到了 this link在 TechNet 上,但它没有提到 什么类型的 脚本将被阻止(因为不是所有的脚本都被阻止,我迷路了),互联网上几乎所有的结果都解释了如何禁用增强安全性,但不是它的作用。
感谢任何提示...:\
最佳答案
如果禁用 IE Enhanced Security,此问题就会消失。我不确定这是否是有效的解决方法,但也许它可以提供线索。
要禁用,请打开服务器管理器。单击配置 IE ESC 并为管理员或用户禁用增强的安全性。
关于javascript - Windows 增强的安全性能否破坏 jQueryUI 的日期选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869935/