JavaScripts в WebControl
От: Аноним  
Дата: 31.05.04 13:32
Оценка:
Добрый день.

Разрабатываю Control и столкнулся со следующей проблемой:

Для работы контрола подключается файл js, с набором функций.

<SCRIPT src="scripts/Behavior.js"></SCRIPT>

Так вот в момент отрисовки aspx сраницы некоторые функции начинают
выполняться , и вываливать ошибки.

Ставлю debugger начале js скрипта и действительно под отладчиком
видно как он заходит в некоторые функции и начинает их выполнять,
примечательно, то что если debugger ставить непосредственно в функции,
то отладчик не останавливается на нем.

Ни каких вызовов функций ни где не прописано.


Может кто сталкивался?



P.S.
Если взять преобразованый aspx код (код после отрисовки страницы),
и сделать из него простой HTML документ то все работает отлично!
Re: JavaScripts в WebControl
От: AndreyFil Россия  
Дата: 31.05.04 14:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А в этом файле со скриптам нет случайно строк типа:


window.attachEvent
Re[2]: JavaScripts в WebControl
От: sbobrikov  
Дата: 31.05.04 18:14
Оценка:
Здравствуйте, AndreyFil, Вы писали:

AF>А в этом файле со скриптам нет случайно строк типа:



AF>
AF>window.attachEvent
AF>


Нет. Такого нет.

Из скрипта идет обращение к Web сервису через элемент формы(DIV)


<div id="WebService" style="BEHAVIOR: url(scripts/webservice.htc)" showprogress="true"></div>


инициализация которого стоит на document.body.onload.

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


Не понятно именно почему выполняются функции скрипта?


Еще похоже что идет предпроверка кода JS скрипта.
Другой скрипт вылетал из-за строки:

alert('С русским сообщением');, с английским все нормально.

В еще одном выдавалась синтаксическая ошибка в выражении


If (условие1){

    if(условие2)
        действие1;
    else
        действие2;

}



если во вложенном if не установить фигурные скобки даже на один опреатор!!!


If (условие1){

    if(условие2)
        {действие1;}
    else
        {действие2;}

}
Re[3]: JavaScripts в WebControl
От: AndreyFil Россия  
Дата: 01.06.04 06:50
Оценка:
Здравствуйте, sbobrikov, Вы писали:

мда... не понятно.
А весь скрипт можно увидеть?
Re[4]: JavaScripts в WebControl
От: Аноним  
Дата: 01.06.04 11:31
Оценка:
WebForm1.aspx:

<%@ Register TagPrefix="isdd" Namespace="Infosoft.WebControls" Assembly="Infosoft.WebControls.IsWebDropDown" %>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TestIsWebDropDown.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <SCRIPT src="scripts/IsDropDown_Behavior.js"></SCRIPT>        
        <SCRIPT src="scripts/IsDropDown_DictData.js"></SCRIPT>
        <LINK href="css/IsWebComboBox.css" type="text/css" rel="stylesheet">        
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <IsDD:IsWebDropDown id="IsWebDropDown1" runat="server"></IsDD:IsWebDropDown>
            <div id="WebService" style="BEHAVIOR: url(scripts/webservice.htc)" showprogress="true"></div>                        
        </form>
    </body>
</HTML>


HTML после отрисовки:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <SCRIPT src="scripts/IsDropDown_Behavior.js"></SCRIPT>        
        <SCRIPT src="scripts/IsDropDown_DictData.js"></SCRIPT>                            
        <LINK href="css/IsWebComboBox.css" type="text/css" rel="stylesheet">        
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form name="Form1" method="post" action="WebForm1.aspx" id="Form1">
            <input type="hidden" name="__VIEWSTATE" value="dDwxMjYxNzE3Mjg2Ozs+gItNUrcPZ1jx0QgBr+rse0mnZek=" />

            <div id="IsWebDropDown1" .....  структура объекта ..... </div>
            <div id="WebService" style="BEHAVIOR: url(scripts/webservice.htc)" showprogress="true"></div>                        
                    
            <script language="javascript">
                <!--
                    var IsWebDropDown =  new Array('IsWebDropDown1');
                // -->
            </script>

            <script> 
                IsWebDropDown_Init(); 
                {WebService.useService("http://sbob/WebService_Dictionary/WebService_Dictionary.asmx?WSDL","ISWebService_Dictionary");} 
                document.body.onload = init_ws; 

            </script>
        </form>
    </body>
</HTML>


В IsWebDropDown_Init(); нет обрашеий к функциям из IsDropDown_DictData.js.
Да и если убрать вызов ситуация не меняется.


Скрипт IsDropDown_DictData.js.
DictData_InitGuid не трогает,а на DictData_GetCountRows выдает ошибку:
"Ошибка выполнения Microsoft JScript: "WebService" — определение отсутствует", указывая на строку
"callObj.funcName = "Dict_GetCountRows";" Такое чувство что еще и отладчик позиционируется некорректно.


            /// Инициализация справочника( получение dict_sGUID )
            function DictData_InitGuid()
            {
                    
                // Преобразуем данные
                var dict_Id_BA            = code(this.dict_Id);
                var dict_Param1_BA        = code(this.dict_Param1);
                var dict_Param2_BA        = code(this.dict_Param2);
                var dict_Param3_BA        = code(this.dict_Param3);
        
                // Вызовем метод сервиса        
                callObj = new Object();
                callObj.async = false;
                callObj.funcName = "Dict_Init";        
                callObj = WebService.ISWebService_Dictionary.callService(callObj, dict_Id_BA, dict_Param1_BA, dict_Param2_BA, dict_Param3_BA);

                // Получаем данные
                if (callObj.errorDetail != undefined){                    
                    DictData_OnError( callObj.errorDetail );
                    }
                else {                    
                    this.dict_sGUID = callObj.value;
                    }
            
            }
            
            
            
                /// Получаем количество записей
            function DictData_GetCountRows()
            {                
                this.countRows = 0;
            
                // Вызовем метод сервиса        
                callObj = new Object();
                callObj.async = false;
                callObj.funcName = "Dict_GetCountRows";        
                callObj = WebService.ISWebService_Dictionary.callService(callObj, this.dict_sGUID );                
                
                // Получаем данные
                if (callObj.errorDetail != undefined){                    
                    DictData_OnError( callObj.errorDetail );
                    }
                else {                    
                    this.countRows = callObj.value;                                
                    }
            
            }


Еще раз отмечу что если взять HTML код, то все отрабатывает нормально,
а при запуска aspx вылезают проблемы.

Спасибо за помощь.
Re[5]: JavaScripts в WebControl
От: AndreyFil Россия  
Дата: 01.06.04 11:42
Оценка:
Здравствуйте, Аноним, Вы писали:

Мда... Если тебе не к спеху, то я денек посмотрю.
Re[5]: JavaScripts в WebControl
От: AndreyFil Россия  
Дата: 01.06.04 11:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А что в файле webservice.htc. Может там есть обработчик onload?
Re[6]: JavaScripts в WebControl
От: Gollum Россия  
Дата: 01.06.04 11:51
Оценка:
Здравствуйте, AndreyFil, Вы писали:

AF>А что в файле webservice.htc. Может там есть обработчик onload?


Там стандартный вебсервис бихевиор от MS
Мне звонили с открытия пленума — я сказал им, что я не приду
Eugene Agafonov on the .NET

Re[7]: JavaScripts в WebControl
От: AndreyFil Россия  
Дата: 01.06.04 11:52
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Там стандартный вебсервис бихевиор от MS


Так может в нем проблема?
Re[8]: JavaScripts в WebControl
От: Аноним  
Дата: 02.06.04 08:08
Оценка:
Ура!

Удалось поймать причину этого глюка,
в результате которого у Visual Studio сносило крышу.

Пересохранил JS скрипты в UTF-8 (были ANSI) и все заработало.
Причем пропали и глюки alert("c русским сообщением"), и вложенные if'ы без скобок.

html'ки, сохраненные вручную, отрабатывали так как они тоже были в ANSI, а при
отрисовки aspx, видно html генериться в юникоде.
Visual Studio настойчиво сохраняет html в ANSI.
Интерестно, где этим можно управлять.
И вообще, как и в какой кодировке правильнее организовывать скрипты в проекте?
Все в одной, можно в различных и при вызове указывать(где и как)?


Всем кто откликнулся большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.