我在尝试调试由几个月前离开公司的人开发的ASP.NET + jQuery + jQueryUI Web应用程序时遇到了一个奇怪的问题。
问题:
开发我们使用的是Windows Server 2008 R2虚拟机或Windows Server 2003 R2虚拟机,它们都是由所有开发人员通过终端服务共享的,并由我们的IT部门控制。
它们都附带Internet Explorer 8并且具有增强的安全性。
当我尝试调试应用程序或尝试在测试站点上导航时,某些JavaScripts函数无效。
其中一个是jQueryUI的datepicker:日历打开,但是当我点击日期时没有任何事情发生。
我已经在Internet Explorer的可信站点中添加了http://localhost
和测试站点,但无济于事;如果我从受信任的站点列表中删除它们(因此它们在Internet区域中运行),则不会执行任何JavaScript。
问题:
这个问题可能是由Windows增强的安全性造成的吗?
如果没有,我可以尝试缩小罪魁祸首?
我知道IT团队应该解决这类问题,但他们并不关心它,因为我无法重现只在Internet Explorer中发生的一些错误(这个JavaScript)阻止事情阻止我甚至到达bug),我无法回复我们的用户“抱歉,但我们不会解决问题,因为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>
更新
我忘了提到我在TechNet上找到了this link,但它没有提到脚本将被阻止的类型(因为并非所有脚本都被阻止,我是几乎所有在互联网上的结果都解释了如何禁用增强的安全性,但不能解释它的作用。
任何提示都表示赞赏......:\
答案 0 :(得分:3)
如果禁用IE增强安全性,则此问题就会消失。我不确定这是否是一个有效的解决方法,但也许它可以提供线索。
要禁用,请打开服务器管理器。单击“配置IE ESC”并为管理员或用户禁用“增强安全性”。
答案 1 :(得分:0)
黑暗中的刺可能但是我遇到了类似的问题,其中网站在本地Intranet区域中呈现,因此在IE7兼容模式下自动呈现。这似乎导致jquery的浏览器检测错误。将以下元标记添加到head部分修复它。
<meta http-equiv="X-UA-Compatible" content="IE=8" />