我遇到了一个奇怪的问题,试图debugging由几个月前离开公司开发的ASP.NET + jQuery + jQueryUI Web应用程序。
问题:
为了开发我们使用Windows Server 2008 R2虚拟机或Windows Server 2003 R2虚拟机,它们都由所有开发人员通过terminal服务共享,并由我们的IT部门控制。
它们都带有Internet Explorer 8,并且具有增强的安全性。
当我尝试debugging应用程序,或尝试在testing网站上导航时,某些JavaScript函数不起作用。
其中之一是jQueryUI的datepicker:日历打开,但是当我点击一个date没有任何反应。
我已经在Internet Explorer的受信任站点中添加了http://localhost
和testing站点,但无济于事; 如果我将它们从受信任的站点列表中删除(因此它们在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>
更新:
我忘了提到我已经在TechNet上find这个链接 ,但是没有提到什么types的脚本会被阻塞(因为不是所有的脚本都被阻塞了,我迷路了),几乎所有的因特网上的结果都会告诉你如何禁用增强的安全性,但不是它所做的。
任何暗示赞赏…:\
如果您禁用IE增强安全,则此问题消失。 我不确定这是否是一个有效的解决方法,但也许可以提供一个线索。
要禁用,请打开服务器管理器。 单击配置IE ESC并禁用管理员或用户的增强安全性。
在黑暗中刺可能,但我有类似的问题,该网站被渲染在本地Intranet区域,因此自动呈现在IE7兼容模式。 这似乎在jQuery的浏览器检测中导致错误。 将以下元标记添加到头部分修复了它。
<meta http-equiv="X-UA-Compatible" content="IE=8" />