我需要在我的代码中回调Javascript函数,但不要触发。我正在提供我正在做的事情的详细信息?。
我在调用javascript函数的页面中有输入按钮。在那里,我正在加载另一个ProfilePic.aspx页面。 ProfilePic.aspx有FileUpload,OK和cancle按钮
<input type=button value="Change Image" onclick="javascript:SelectUserImage()" />
Javascript函数
<script type="text/javascript">
function SelectUserImageCallback(ret) {
var imgId = 'ctl00_PlaceHolderMain_prof_imgUser';
var clearId = 'ctl00_PlaceHolderMain_prof_hidImageURL';
if (ret) {
if (ret == '__RESET__') {
document.getElementById(imgId).src = '\u002f_layouts\u002fimages\u002fno_pic.gif';
document.getElementById('ctl00_PlaceHolderMain_prof_hidImageURL').value = '';
document.getElementById(clearId).style.display = 'none';
}
else {
document.getElementById(imgId).onload = 'imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');';
document.getElementById(imgId).src = ret;
document.getElementById('ctl00_PlaceHolderMain_prof_hidImageURL').value = ret;
setTimeout('imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');', 1);
setTimeout('imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');', 100);
document.getElementById(clearId).style.display = '';
}
}
}
function SelectUserImage() {
var href = '\u002f_layouts\u002fProfilePic.aspx';
var features = 'resizable: yes; status: no; scroll: no; help: no; center: yes; dialogWidth: 460px; dialogHeight: 140px; width:460;height:240;menubar:no;directories:no;location:no;';
commonShowModalDialog(href, features, SelectUserImageCallback, null);
}
在ProfilePic.aspx页面中,一旦用户点击OK buttong。我用一些逻辑上传他的照片然后我用javascript关闭窗口
protected void btnOK_Click(Object sender,EventArgs e) {
var features = 'resizable: yes; status: no; scroll: no; help: no; center: yes; dialogWidth: 460px; dialogHeight: 140px; width:460;height:240;menubar:no;directories:no;location:no;';
commonShowModalDialog(href, features, SelectUserImageCallback, null);
try
{
// My logic Here
Debug.WriteLine("Shared Pictures Save Ends: " + DateTime.Now);
Response.Write ("<script language =javascript>close();</script>");
Response.End();
}
catch (Exception exception)
{
LogMessage(exception.Message, EventLogEntryType.Error);
if (exception.Message.ToLower().Contains("blocked"))
errorDisplay.Text = "* This type of file has been blocked by the administrator, please try a different file.";
else
{
errorDisplay.Text = exception.Message;
}
}
}
我可以关闭窗口但是,我需要调用回调函数`SelectUserImageCallback'不激活。完成OK按钮部件执行后,我需要调用此方法。
答案 0 :(得分:0)
你在回调执行之前关闭了窗口吗?我以前做过那个。作为实验,请尝试注释掉关闭窗口的代码。
您可能需要重新构建代码,以便回调函数在完成任何操作时关闭窗口。
更新:抱歉,我误解了这个问题。有很多代码,我没有全部阅读。我认为回调是在对话框页面中,但它看起来像是在主页面中。我不熟悉commonShowModalDialog()
,但看起来它可能与SharePoint有关。你有关于那种方法的任何文件吗?我发现this discussion使得它看起来像是一种从对话框中返回值的特殊方法。可能是因为您没有以正确的方式关闭窗口而未调用回调。 (这是我的总体猜测。)