![](/img/trans.png)
[英]JavaScript sometimes prevents server event from firing with asp.net
[英]asp.net javascript .click() event not firing on server
我有以下代码在开发机器上正常工作。 但是,当我将其部署到IIS时, the .click()
不会触发。
我有下拉框,当选择状态时,我添加以下代码以打开RadWindow
if (ddlStatusID.SelectedValue.ToString() == "2") btnUpdateStatus.Attributes.Add("onclick", "return OpenWindow2('" + ResolveUrl("~/Request/AddBillableTime.aspx? RequestId=" + RequestId.ToString()) + "','650','320');"); else btnUpdateStatus.Attributes.Add("onclick", "");
在弹出页面中,当用户点击我添加的按钮时,请执行以下操作
ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", "ClosePopup();", true);
这是ClosePopup的javascript。
function ClosePopup() {
//debugger;
alert('This is before closing the window');
var oWindow = GetRadWindow();
oWindow.argument = null;
oWindow.close();
alert('This is after closing the window');
oWindow.BrowserWindow.ButtonClick();
}
在主窗口中,我有以下javascript,它在上面的javascript的最后一行中调用。
function ButtonClick() { //debugger; alert('This is before button click!'); var btnUpdateStatus = document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus'); alert('This is getting the button!'); btnUpdateStatus.setAttribute("onclick", ""); alert('This is setting the button!'); btnUpdateStatus.click(); alert('This is after clicking the button!');
}
我已经使用警报来检查javascript函数执行的程度。
当我使用Visual Studio运行它时,以及当我在本地IIS服务器中托管它时,整个功能正常工作。 但是,当我将其部署到服务器时,click()事件将停止触发。
如果代码中有任何错误,请告诉我。
当我被分配到一项新任务时,我没有时间研究这个问题。 但是一旦我回到同一个任务中就不得不修复它。 我从我的一个朋友那里得到了一些帮助来解决这个问题。 我不得不稍微改变当前的逻辑,并解释了下面的解决方案。
我更改了ButtonClick
函数,如下所示,使用__doPostBack
函数创建一个返回页面的手动帖子。
function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}
我从页面的Page_Load
方法处理了帖子。
if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
UpdateStatus();
}
如果回发事件目标与__doPostBack
方法中指定的事件目标匹配,那么我调用了一个方法来更新状态。
这样我就可以避免这个问题。 但我不知道为什么事件没有使用旧的ButtonClick
函数触发。
如果代码在您的PC上正常工作,那么对我来说唯一可疑的就是这两行:
1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
2. btnUpdateStatus.setAttribute("onclick", "");
对于第一行,您应该这样做,而不是:
document.getElementById('<%=btnUpdateStatus.ClientID%>');
对于第二行,似乎您将onclick
处理程序设置为""
,基本上不应该执行任何操作。
这根本不是问题。 最好的办法是使用Firebug调试它,在正在调用的相应Javascript函数中放置一个断点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.