我有一个使用旧的MS远程桌面ActiveX对象连接到我们的服务器的Web应用程序。
最初,代码是在VBScript中,因为那是MS站点上给出的样本。但是,MS已经放弃了对IE 11中VBScript的支持,所以我试图改变它以使用Javascript。在操作上,它在大多数情况下都在工作。我可以连接到服务器。 但是,服务器的视图在页面中间显示为一个小方块。正在设置控件的高度和宽度,看起来它们是正确的,因为我可以在页面上以我想要的大小看到控件的轮廓。但是视图本身非常小(这不会发生在页面的VBScript版本中)。此外,"断开"由于我已将代码转换为javascript,因此事件似乎无法触发。有没有人能够使用Javascript使这个组件工作?是否有任何替代品不需要在服务器或客户端上进行任何安装?
好的,对于可能发生这种情况的其他任何人的更新,以及另一个问题。我终于得到了以下HTML和JS:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="./scripts/jquery-1.10.2.js" ></script>
</head>
<body>
<script type="text/javascript" for="rdpClient" event="OnDisconnected(reason)">
OnDisconnected(reason);
</script>
<script type="text/javascript">
var pw;
function GetPassword() {
return $.ajax({
url: "OpenNewRDP.aspx/GetPassword",
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: ''
});
}
GetPassword().done(function (data) {
pw = data.d;
var rdpClient = document.getElementById("rdpClient");
rdpClient.AdvancedSettings2.ClearTextPassword = pw;
});
function OnReadyStateChange() {
var rdpClient = document.getElementById("rdpClient");
if (rdpClient != undefined) {
if ((rdpClient.readyState == 4) && (rdpClient.SecuredSettingsEnabled)) {
SetRdpDefaultSettings();
} else {
rdpClient.Server = "";
alert("Trusted Sites Error");
}
}
}
function SetRdpDefaultSettings() {
var rdpClient = document.getElementById("rdpClient");
var resHeight = screen.height;
var resWidth = screen.width;
rdpClient.DesktopHeight = resHeight - 100;
rdpClient.DesktopWidth = resWidth - 30;
rdpClient.height = resHeight - 100;
rdpClient.width = resWidth - 30;
rdpClient.UserName = "<%=UserName%>";
//rdpClient.AdvancedSettings2.ClearTextPassword = pw;
if (rdpClient.SecuredSettingsEnabled) {
rdpClient.SecuredSettings.StartProgram = "<%=StartProgram%>";
rdpClient.SecuredSettings.WorkDir = "c:\\";
} else {
alert("Trusted Sites settings need to be updated.");
}
}
function OnDisconnected(disconnectCode) {
window.close();
}
</script>
<object
id='rdpClient'
onreadystatechange="OnReadyStateChange()"
codeBase='/wpresources/downloads/msrdp.cab#version=5.2.3790.0'
classid='CLSID:7584c670-2274-4efb-b00b-d6aaba6d3850'
VIEWASTEXT>
<PARAM NAME='Server' VALUE='<%=ServerName%>'>
<PARAM NAME='StartConnected' VALUE='1'>
</object>
</body>
</html>
然而,我想确保这在旧版本的IE中仍然有用,因为我们有一堆客户因为某种原因仍在使用IE 7或8而且只能&不会/赢得& #39; t升级。所以我在标题中添加以下行来模拟旧版本:
<meta http-equiv="X-UA-Compatible" content="IE=7"/>
我发现它在IE 7或8中不起作用(但在9,10和11中工作正常)。在IE 7或8中运行时,我得到一个&#34;未知异常&#34;在这个例程中(在指示的行上):
GetPassword().done(function (data) {
pw = data.d;
var rdpClient = document.getElementById("rdpClient");
rdpClient.AdvancedSettings2.ClearTextPassword = pw; **// error occurs here**
});
任何线索为什么IE 7和8会因此而窒息?