我有以下代码在开发机器上正常工作。但是,当我将其部署到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()事件将停止触发。
如果代码中有任何错误,请告诉我。
答案 0 :(得分:2)
当我被分配到一项新任务时,我没有时间研究这个问题。但是一旦我回到同一个任务中就不得不修复它。我从我的一个朋友那里得到了一些帮助来解决这个问题。我不得不稍微改变当前的逻辑,并解释了下面的解决方案。
我更改了ButtonClick
功能,如下所示,使用__doPostBack
功能创建一个回到页面的手动帖子。
function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}
我从页面的Page_Load
方法处理了帖子。
if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
UpdateStatus();
}
如果回发事件目标与__doPostBack
方法中指定的事件目标匹配,那么我调用了一种方法来更新状态。
这样我可以避免这个问题。但我不知道为什么事件没有使用旧的ButtonClick
函数触发。
答案 1 :(得分:0)
如果代码在你的电脑上工作正常,那么对我来说唯一可疑的就是这两行:
1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
2. btnUpdateStatus.setAttribute("onclick", "");
对于第一行,您应该这样做,而不是:
document.getElementById('<%=btnUpdateStatus.ClientID%>');
对于第二行,似乎您将onclick
处理程序设置为""
,基本上不应该执行任何操作。
这可能不是问题所在。最好的办法是使用Firebug调试它,在正在调用的相应Javascript函数中放置一个断点。