Как исполнить javascript ?
От: Аноним  
Дата: 13.08.03 14:42
Оценка:
Ситуация. есть Frameset. В одном frame вводится пароль. Если пароль верный, то нужно обновить в соответствии с обстоятельствами, остальные фреймы. Т.е. нужно сначала кое-что сделать, а потом обновлять фреймы. Как это сделать ? Ведь нужно сначала в функции-обработике выполнить обработку сообщения в коде C#, а затем исполнить javascript, который просубмитит нужные фреймы. Даже подступиться к проблеме не могу. Хелп, плз
Re: Как исполнить javascript ?
От: nob114  
Дата: 13.08.03 15:09
Оценка:
Nu v toi forme v kotori user nagimaet knopku Login vse dogno prohodit' gladko -> tak ved' ? Vi poveryaete parol' against database — dalshe nachinaetsya samoje interesnoje... o

Kak bi ja sdelal ?

1. Render'te hidden field v forme s knopochkoi Login (dalee Activni frame)), znachenije kotorogo budet opredelyat' — bil li login uspeshnen.
Est' tehnicheski neskolko putei sdelat' eto RegisterHiddenField ili sipol'zovat#' predsozdannoje servernoje pole i manipulirovat' znacheniem cherez object model na server.

2. onload stranitsi, na kotori bil nagata knopka dolgen proveryat' znachenije etogo polyua i v zavisimosti ot etogo JScript'om redirectit' ostal'nije freimi.

Tut est' tonkost' — kak sdelat' pokrasivee... Est' beskolko varinatov:

2.1 Mogno hranit' uspeeshnije URL v tom ge samom Activnom frame — togda ih mogno budet podtseplyat' tem ge JScriptom.. Minusi ponyatni, dumau...

2.2 Na kagdi iz neactivnih freimov registritsya po odnomu PostBAck controlu, pered submitom formiruetsya EventArg, sodergashi status popitki — uspeshna ili net... Takoi kontrol budet imet custom Event LoginAttempt(sender, e) = vnutri na server proveryaite status e.LoginAttemptStatus — esli on Successfull, to delaete, chto hotite.

Dumau, eto budet ne ochen' ponyatno esli vi neikogda ne rabotali s kontrolami umeushimi raizit' PostBackEvent. V MSDN ochen' horosho vse napisano. Gclavnya ideya tut — objasnit' serveru, chtosubmit bil sdelan, chtobi zaraizit' event.


Nu i togo sprashivaite, esli chto neponyatno !!!
Re: Как исполнить javascript ?
От: nob114  
Дата: 13.08.03 15:15
Оценка:
Check this out!

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuipageclassgetpostbackeventreferencetopic1.asp
Re: Как исполнить javascript ?
От: Gollum Россия  
Дата: 14.08.03 05:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Ситуация. есть Frameset. В одном frame вводится пароль. Если пароль верный, то нужно обновить в соответствии с обстоятельствами, остальные фреймы. Т.е. нужно сначала кое-что сделать, а потом обновлять фреймы. Как это сделать ? Ведь нужно сначала в функции-обработике выполнить обработку сообщения в коде C#, а затем исполнить javascript, который просубмитит нужные фреймы. Даже подступиться к проблеме не могу. Хелп, плз


RegisterStartupScript в данном фрейме. То есть последовательность событий следующая:

Юзер нажал на кнопку фрейма — постбэк, обработка серверного кода, RegisterStartupScript, отправка респонза клиенту, исполнение скрипта на клиенте (скрипт дергает скрипты других фреймов, которые делают свои специфические сабмиты)
He's taking the preventive measures, It must have been too late
Eugene Agafonov on the .NET

Re[2]: Как исполнить javascript ?
От: Gollum Россия  
Дата: 14.08.03 05:42
Оценка:
Здравствуйте, nob114, Вы писали:

N>Dumau, eto budet ne ochen' ponyatno esli vi neikogda ne rabotali s kontrolami umeushimi raizit' PostBackEvent. V MSDN ochen' horosho vse napisano. Gclavnya ideya tut — objasnit' serveru, chtosubmit bil sdelan, chtobi zaraizit' event.


N>Nu i togo sprashivaite, esli chto neponyatno !!!


Зачем все так усложнять???????????????????????????

Forms authentication, и элементарные скрипты, не нужно городить такие огороды.
По всей Смоленщине нет кокаина — это временный кризис сырья
Eugene Agafonov on the .NET

Re[2]: Как исполнить javascript ?
От: Аноним  
Дата: 14.08.03 11:57
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Юзер нажал на кнопку фрейма — постбэк, обработка серверного кода, RegisterStartupScript, отправка респонза клиенту, исполнение скрипта на клиенте (скрипт дергает скрипты других фреймов, которые делают свои специфические сабмиты)


Прекрасно, но чего вписать-то, хоть например, в параметрах RegisterStartupScript ? Типа, значит, отсылает скрипт вместе с респонзом, и он исполняется перед отображением ? В MSDN там муть какую-то написали. Типа там он даже не исполняется, а функции скрипта региситрирует.
Re[3]: Как исполнить javascript ?
От: Gollum Россия  
Дата: 14.08.03 12:30
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Прекрасно, но чего вписать-то, хоть например, в параметрах RegisterStartupScript ? Типа, значит, отсылает скрипт вместе с респонзом, и он исполняется перед отображением ? В MSDN там муть какую-то написали. Типа там он даже не исполняется, а функции скрипта региситрирует.


Создай пустую вебформу, помести в PageLoad этот код (VB.Net)

If Not IsPostBack Then
  RegisterStartupScript("myScript", "<script language=""javascript"">alert(""hello,world!"");</script>")
End If


И сам увидишь, чего будет.
"myScript" — это для того, чтобы если контролы будут регистрировать скрипт, то если скрипт с таки ID уже есть, второй раз его не рендерить.
В лучших книгах всегда нет имен, и в лучших картинах — лиц
Eugene Agafonov on the .NET

Re[2]: Как исполнить javascript ?
От: Romario Ниоткуда  
Дата: 14.08.03 12:38
Оценка:
А я попробовал сделать так :
в теге <form..> добавил OnLoad="SubmitSomeFrame()". После этого программа ведёт себя так : при нажатии баттона на этом фрейме поступает по непонятным обстоятельствам двумя способами :
1. Делает Page_Load фрейма с баттоном, далее — обработчит click'а баттона, затем — субмитит нужный фрейм приведённой выше функцией.
2. Делает Page_Load фрейма с баттоном, а затем, игнорируя обработчит click'а баттона, — субмитит нужный фрейм приведённой выше функцией.

Не могли бы вы прокомментировать ситуацию ?
Re[4]: Как исполнить javascript ?
От: Romario Ниоткуда  
Дата: 14.08.03 12:58
Оценка:
Здравствуйте, Gollum, Вы писали:

G>И сам увидишь, чего будет.


Прекрасно. Заработало. Загвоздка с этой функцией была в том, что я в теле скрипта вызывал другую скриптовую функцию, которая уже всё делала. Это не срабатывало (почему — не знаю). Заработало после того, как я там прописал конкретные команды (тело той функции, короче).

RegisterStartupScript("submit","<...>SubmitMainFrame();</..>")
RegisterStartupScript("submit","<...>top.frames["main"].SubmitThis();</..>")

Спасибо. Не знаю, сколько бы без вас ещё мучался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.