Функция обратного вызова? - PullRequest
1 голос
/ 14 октября 2010

Мне нужно вызвать функцию Javascript в моем коде, но не запускать. Я предоставляю подробности, что я делаю?

  1. У меня есть кнопка ввода на странице, которая вызывает функцию javascript. Там я загружаю другую страницу ProfilePic.aspx. ProfilePic.aspx имеет FileUpload, ОК и кнопку отмены

    <input type=button value="Change Image" onclick="javascript:SelectUserImage()" />
    
  2. Функции 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';
    
    
    <pre><code>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);
    
    }

  3. На странице ProfilePic.aspx один раз пользователь нажимает кнопку «ОК». Я загружаю его фото с некоторой логикой, затем закрываю окно с JavaScript

защищенный void btnOK_Click (Отправитель объекта, EventArgs e) {

    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;
        }
    }
}

My Question: Я могу закрыть окно, но, что бы мне ни понадобилось для вызова функции обратного вызова `SelectUserImageCallback ', не запускающей . Мне нужно вызвать этот метод после выполнения части кнопки ОК.

1 Ответ

0 голосов
/ 14 октября 2010

Вы закрываете окно перед выполнением обратного вызова? Я делал это раньше. В качестве эксперимента попробуйте закомментировать код, закрывающий окно.

Возможно, вам придется реструктурировать свой код, чтобы функция обратного вызова закрывала окно, когда оно завершает свою работу.

Обновление: Извините, я неправильно понял вопрос. Там было много кода, и я не прочитал все это. Я думал, что обратный звонок был на странице диалога, но похоже, что это на главной странице. Я не знаком с commonShowModalDialog(), но, похоже, это как-то связано с SharePoint. У вас есть документация по этому методу? Я нашел это обсуждение , из-за которого кажется, что есть специальный способ вернуть значение из диалогового окна. Возможно, ваш обратный вызов не вызывается, потому что вы неправильно закрываете окно. (Это полное предположение с моей стороны.)

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...