gpt4 book ai didi

asp.net - 如何使用 javascript 抑制 IE7 ActiveX 消息?

转载 作者:行者123 更新时间:2023-11-29 18:37:58 25 4
gpt4 key购买 nike

我正在尝试决定是使用自定义 ASP.Net Ajax Extender 还是 jQuery 来执行简单的 Web 服务调用。 Web 服务方法接受客户 ID 并返回客户名称。我倾向于 jQuery,因为它很简单。唯一的问题是,由于我公司的 IE7 组策略设置,jQuery 第一次调用 Web 服务时会提示用户以下消息:

A script is accessing some software (an ActiveX control) on this page which has been marked safe for scripting. Do you want to allow this?

Extender 不会导致显示此消息。我假设 ASP.Net Ajax 库有一些抑制它的 javascript 巫术。所以我的问题是,如何使用 javascript 抑制此消息?

这是我的 aspx 标记:

<h1>
Finder Test</h1>
<div>
<h2>
Extender</h2>
Customer ID:
<asp:TextBox ID="txtCustomerId" runat="server" MaxLength="9" Width="4em" />
<belCommon:FinderExtender ID="extCustomerId" runat="server" TargetControlID="txtCustomerId"
ResultLabelID="lblResult" ServicePath="~/Customer.asmx" ServiceMethod="Name" />
<asp:Label ID="lblResult" runat="server" />
</div>
<div>
<h2>
jQuery</h2>
Customer ID:
<input id="txtCustomerId2" type="text" maxlength="9" style="width: 4em;" value="0000" />
<span id="txtCustomerName2"></span>

<script type="text/javascript">
$(document).ready(function()
{
$("#txtCustomerId2").change(
function()
{
updateCustomerDescription(this.value, "txtCustomerName2");
}).change();
});

function updateCustomerDescription(id, descriptionControlId)
{
// if we don't have a value, then don't bother calling the web service
if (id == null || id.length == 0)
{
$("#" + descriptionControlId).text("");
return;
}

jsonAjax("customer.asmx/Name", "{'id':'" + id + "'}", true,
function(result)
{
var name = result.d == null ? "" : result.d;
$("#" + descriptionControlId).text(name);
}, null);
}

function jsonAjax(url, data, async, onSuccess, onFailed)
{
$.ajax({
async: async,
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: onSuccess,
error: onFailed
});
}
</script>
</div>

[更新]

我假设消息中引用的 ActiveX 控件是 XMLHttpRequest。我还假设 jQuery 和 ASP.Net Ajax 的内部结构都将它用于 IE7。

[更新]

差异似乎在于 ASP.Net Ajax 和 jQuery 构造 XMLHttpRequest 实例的方式。

ASP.Net Ajax(感谢@Jesse Dearing):

 window.XMLHttpRequest = function window$XMLHttpRequest() {
var progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
for (var i = 0, l = progIDs.length; i < l; i++) {
try {
return new ActiveXObject(progIDs[i]);
}
catch (ex) { }
}
return null;
}
}

jQuery 1.3.2:

// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
xhr:function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
}

最佳答案

这听起来不对。如果有适当的安全策略,你不应该能够用 javascript 覆盖它。

我会仔细检查这两个页面,看看它们是否真的访问同一个 ActiveX 控件。我假设这些页面来自同一主机(因此不存在不同 WinInet 信任区域的问题)。

关于asp.net - 如何使用 javascript 抑制 IE7 ActiveX 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/591439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com