- 变量
options.eventTarget
从哪里来? - 如果此函数是由 ASP.NET 代码生成的,我该如何为 Mozilla 修复此函数?
- 这个 JavaScript 函数有什么用?
当调用 anchor 标记时,Mozilla Firefox 在此函数末尾获取 options.eventTarget
的值。 “保存”( anchor 标记)按钮在 Mozilla 中不起作用,所以我想找出原因。
ExplorerPageHtmlLeft$ct...aveCancelDelete$LBuSave <===== problem
Internet Explorer 在调用 anchor 标记时在此函数末尾获取 options.eventTarget
的值。保存( anchor 标记)按钮在 Internet Explorer 中工作正常。
ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave
下面是展开的代码,便于阅读
Mozilla Firefox 保存按钮(损坏):
<a
id="ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_LBuSave"
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave", "", true, "", "", false, true))"
onclick="javascript:encryptField(document.getElementById('ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_TxtPassword'),document.getElementById('IHHidden'));"
>
<img border="0" alt="Save" src="/images/save.gif">
</a>
Internet Explorer 保存按钮(工作正常):
<a
onclick="javascript:encryptField(document.getElementById('ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_TxtPassword'),document.getElementById('IHHidden'));"
id="ExplorerPageHtmlLeft_ctl02_ctl00_SaveCancelDelete_LBuSave"
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ExplorerPageHtmlLeft$ctl02$ctl00$SaveCancelDelete$LBuSave", "", true, "", "", false, true))"
>
<img src="/images/save.gif" border="0" alt="Save">
</a>
这是 JavaScript 函数:
function WebForm_DoPostBackWithOptions(options) {
var validationResult = true;
if (options.validation) {
if (typeof(Page_ClientValidate) == 'function') {
validationResult = Page_ClientValidate(options.validationGroup);
}
}
if (validationResult) {
if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
theForm.action = options.actionUrl;
}
if (options.trackFocus) {
var lastFocus = theForm.elements["__LASTFOCUS"];
if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
if (typeof(document.activeElement) == "undefined") {
lastFocus.value = options.eventTarget;
}
else {
var active = document.activeElement;
if ((typeof(active) != "undefined") && (active != null)) {
if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
lastFocus.value = active.id;
}
else if (typeof(active.name) != "undefined") {
lastFocus.value = active.name;
}
}
}
}
}
}
if (options.clientSubmit) {
__doPostBack(**options.eventTarget**, options.eventArgument);
}
}
最佳答案
好吧,看来 options.eventTarget 的值根本不是问题所在。奇怪的是,刚好是50个字符。
Firebug 中的 options.eventTarget: "ExplorerPageHtmlLeft$ct...aveCancelDelete$LBuSave"
事实证明,Mozilla Firefox Firebug 仅显示 50 个字符。它获取控件客户端 ID 的第一部分和最后一部分(以及中间的 3 个点)并将其粘贴到 Firebug 监视变量的值字段中。为了确认,我只是将“alert(options.eventTarget)”放入 watch 变量中,它显示了整个值。所以这绝对不是!
我仍然不知道为什么我的 LinkButton 不在我的 Mozilla 代码中调用我的事件处理程序,但它在 Internet Explorer 中调用。我想一旦我有更多信息,我会发布它(可能在不同的问题上)。这可能与单击我的链接按钮时打开验证有关。我猜这就是导致 ASP.NET 自动将此函数放入客户端代码的原因。
关于javascript - Mozilla 在 WebForm_DoPostBackWithOptions JavaScript 函数中获取奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686844/