Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Динамически зарегать и выполнить функ-ю javascript


Автор: Rockie 16.6.2012, 13:55
Добрый день!

Сделал вебчасть на ASP.NET(sharepoint). У меня есть кнопка, для которой в btn_OnClick я произвожу определенные действия. Мне нужно после отрабатывания кода в этой кнопке, после загрузки страницы(кнопка ведь вызовет postback?) зарегестрировать свою javascript -функцию и сразу запустить(alert ниже приведен для примера, на самомо деле мне нужно дергать функции sharepoint-а).

я пробовал пихать код просто в Response.Write
Код

Context.Response.Write("<script type='text/javascript'>alert('This message is from event handler');</script>");

все отлично работает, но мне нужно запустить свою более сложную функцию. Запустить примерно такое в Response.Write у меня уже не получается:
Код

<script type='text/javascript'>f(); function f() { alert('This message is from event handler'); }</script>

то есть как понимаю мне надо эту функцию сначала зарегестрировать, а потои "дёрнуть". 
Пробую так зарегестрировать, вроде бы регистрируется, но не отрабатывает
Код

                                   string sMyGreatScript = @"<script type=""text/javascript"">function f(){alert('great message');}</script>";
                                   this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "onload", sMyGreatScript, false);

также не уверен что делаю правильно с "onload" - мне надо запускать _после_ загрузки страницы(после PostBack?). 

Автор: IBS 17.6.2012, 16:40
По данному вопросу не шарю, но смущает, что в скрипте функция сначала вызывается, а потом описывается.

Код

<script type='text/javascript'>f(); function f() { alert('This message is from event handler'); }</script>


В таком варианте точно работать не будет:

Код

<script type='text/javascript'>f();</script>

<script type='text/javascript'>function f() { alert('This message is from event handler'); }</script>

Автор: Rockie 21.6.2012, 17:31
IBS, спасибо за ответ!
па ходу мне надо было скомбинировать первый и второй варианты, в таком варианте уже заработало:

Код
string sMyGreatScript = @"<script type=""text/javascript"">MyOfficeEdit(); function MyOfficeEdit(){EditDocumentButton = new ActiveXObject(""SharePoint.OpenDocuments.1"");if (EditDocumentButton){var strDocument=""" + sUrl + @""";var varProgID=""SharePoint.OpenDocuments"";EditDocumentButton.EditDocument(strDocument, varProgID);}}</script>";                                    this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "onload", sMyGreatScript, false);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)