powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JavaScript и #server()#
20 сообщений из 20, страница 1 из 1
JavaScript и #server()#
    #37323852
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть JavaScript функция которая использует #server(..someMethod())#. Закинул эту функцию в отдельный файл *.js и прикрепил этот файл к странице. Функция работать перестала, я так понимаю из-за #server()#. Как хранить JS функции в отдельных файлах тогда?
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37323856
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cache 5.0.21
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37323878
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не так все просто.
Когда вы делаете #server()#, компилятор модифицирует теги <HEAD> , <BODY>, причем на разных версиях каше по разному,
а сам server заменяет на вызов javascript кода.
Вы это все увидите, если посмотрите на исходник сгенерированной страницы.

По сабжу - скорее всего никак.
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37323960
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Не так все просто.
Когда вы делаете #server()#, компилятор модифицирует теги <HEAD> , <BODY>, причем на разных версиях каше по разному,
а сам server заменяет на вызов javascript кода.
Вы это все увидите, если посмотрите на исходник сгенерированной страницы.

По сабжу - скорее всего никак.
угу, вижу. не получиться... ну ладно :) спасибо
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37324106
evgkrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrewQwer, я храню такие функции в отдельном файле с расширением .inc.
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37324156
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это всего лишь текст ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
Class csp.simple Extends %CSP.Page {

ClassMethod OnPage() As %Status {
 &html<<html><head></head>>
 
 &html<<!--Гипер ивенты от ISC при дефолтной конфигурации можно прописать так -->
 <script type="text/javascript" src="/csp/broker/cspxmlhttp.js"></script>
 <script type="text/javascript" src="/csp/broker/cspbroker.js"></script>
 >
 ;но лучше так :
 ;w ..HyperEventHead() 
 
 &html<<body>
  <div id="datetime"></div>
  <button id="server">server</button>
  <button id="call">call</button>
 >
 
 ;сгенерированные ajax вызовы лучше сложить в отдельный объект JS на странице
 ;Вынести его в отдельный javaскрипт не получится, ибо динамически формируются имена функций
 ;а вот в отдельный метод Каше ...
 d ..wJsServerMethods()
 
 ;зато остальной можно выносить в отдельный файл
 &html<<script type="text/javascript">
 
 //сократим часто используемый код 
 var $=function(id){return document.getElementById(id)}
 
 //универсальная привязка обработчиков событий
 var $bind=("v"=="\v")?function(o,e,h){ //IE
  o.attachEvent("on"+e,h);
 }:function(o,e,h){ //other
  o.addEventListener(e,h,false);
 }
 
 function changeHTML(html){ //какая нибудь чисто клиентская функция
  $("datetime").innerHTML=html;
 }
 
 $bind(window,"load",function(){ //после загрузки страницы понеслась 
   
   $bind($("server"),"click",function(){ //динамическая привязка к событию
     changeHTML(window.serverMethods.method1());
   });
   
   $bind($("call"),"click",function(){
     window.serverMethods.method2("window.changeHTML")
   });
  
 });
</script>>  
 
 &html<</body></html>>
 Quit $$$OK
}

///
ClassMethod wJsServerMethods() {
 &html<<script type="text/javascript">
 window.serverMethods={
   method1: function(){ return #server(..Method1())#; }
   ,method2: function(/*callback function name*/ fn){ #call(..Method2(fn))#; return; }
 } 
</script>> 
}

///Синхронный возвращает результат
ClassMethod Method1(){  q $zdt($h, 3 ) }

///Асинхронный результат не возвращает, но может написать его в javascript
ClassMethod Method2(func as %String="alert"){  w func,"(",..QuoteJS(..Method1()),");" }

}
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325551
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwerБлок А.Н.Не так все просто.
Когда вы делаете #server()#, компилятор модифицирует теги <HEAD> , <BODY>, причем на разных версиях каше по разному,
а сам server заменяет на вызов javascript кода.
Вы это все увидите, если посмотрите на исходник сгенерированной страницы.

По сабжу - скорее всего никак.
угу, вижу. не получиться... ну ладно :) спасибо

Ну вот... Как же не получится... получится, и еще как. Вас же никто не заставляет иметь файл с расширением js для содержания скриптов.

Код: plaintext
<script type="text/javascript" src="/csp/user/superscript.csp"></script>

Должно получиться. Если будут проблемы, в начало этого csp файла можно внутри коммента вставить как бы открытие скрипта (лет 5-ть назад так работало, а сейчас, думаю, и подавно)
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325583
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesovAndrewQwerпропущено...

угу, вижу. не получиться... ну ладно :) спасибо

Ну вот... Как же не получится... получится, и еще как. Вас же никто не заставляет иметь файл с расширением js для содержания скриптов.

Код: plaintext
<script type="text/javascript" src="/csp/user/superscript.csp"></script>

Должно получиться. Если будут проблемы, в начало этого csp файла можно внутри коммента вставить как бы открытие скрипта (лет 5-ть назад так работало, а сейчас, думаю, и подавно)
поэкспериментирую! спасибо
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325600
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к сожалению когда подключаю так :
Код: plaintext
1.
2.
<script src="scripts.csp">
</script>
то в результате в файле добавляется код:
Код: plaintext
1.
2.
3.
<script language="JavaScript" src="/csp/broker/cspxmlhttp.js"></script><script language="JavaScript" src="/csp/broker/cspbroker.js"></script>//<script language='javascript'>
function init() { 
......
}
Получается внутри <script> находиться еще один <script> и ничего не работает
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325604
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот через <CSP:INCLUDE page="scripts.csp"/> вроде как работает! правда скрипты в тег body добавляются...
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325820
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer,
стандарт позволяет включать скрипты до закрывающего тега body
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37325962
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefintAndrewQwer,
стандарт позволяет включать скрипты до закрывающего тега body
я понимаю. просто в <head> как то привычнее чтоли :)
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326180
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer, а в некоторых случаях именно туда (перед </body>) и рекомендуют помещать скрипты :)
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326423
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнее время именно перед </body> и помещаю, программа гораздо легче читается.
(И вроде как это еще немного увеличивает скорость загрузки в браузере?)
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326476
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
все зависит от типа страницы, но основной смысл в том, что пока не загрузится скрипт, не будет показано содержимое страницы, поэтому на страницах с большим содержанием html - html пускают вперед, а в конце добавляют доп. скрипты (js-библиотеки).
Аналог такого решения неуниверсальный аттрибут defer тега script.
А вот если интерфейс формируется на клиенте с помощью js...

В каше-кормилице эту оптимизацию можно было увидеть на зен страницах - в 2007-2008 версии скрипты из параметра JSINCLUDES включали в начале странице, в более поздних версиях включается в конце страницы (ох, вспоминал добрыми словами, наверно икалось ... :)
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326674
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwerк сожалению когда подключаю так :
Код: plaintext
1.
2.
<script src="scripts.csp">
</script>
то в результате в файле добавляется код:
Код: plaintext
1.
2.
3.
<script language="JavaScript" src="/csp/broker/cspxmlhttp.js"></script><script language="JavaScript" src="/csp/broker/cspbroker.js"></script>//<script language='javascript'>
function init() { 
......
}
Получается внутри <script> находиться еще один <script> и ничего не работает

А вот такую конструкцию в начало файла скриптов если вставить:
Код: plaintext
1.
2.
/*
<html><head></head><body></body></html>
*/
?
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326791
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesovAndrewQwerк сожалению когда подключаю так :
Код: plaintext
1.
2.
<script src="scripts.csp">
</script>
то в результате в файле добавляется код:
Код: plaintext
1.
2.
3.
<script language="JavaScript" src="/csp/broker/cspxmlhttp.js"></script><script language="JavaScript" src="/csp/broker/cspbroker.js"></script>//<script language='javascript'>
function init() { 
......
}
Получается внутри <script> находиться еще один <script> и ничего не работает

А вот такую конструкцию в начало файла скриптов если вставить:
Код: plaintext
1.
2.
/*
<html><head></head><body></body></html>
*/
?
Такое проходит, но в этом случае методы обьявленные в основном файле csp, например:
Код: plaintext
1.
2.
3.
<script language="cache" method="cacheMethod" arguments="NT:%String">
....
</script>
не видны для функций в файле scripts.csp (ну логично, это разные csp страницы). Т.е. чтоб работал и JS и были доступны методы Cache они должны быть в 1 файле. С помощью конструкции <script src="..."> такой файл не подключиться. <CSP:INCLUDE> вроде пока одно из лучших решений
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37326919
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwerне видны для функций в файле scripts.csp (ну логично, это разные csp страницы). Т.е. чтоб работал и JS и были доступны методы Cache они должны быть в 1 файле.
False
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37327186
AndrewQwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefintAndrewQwerне видны для функций в файле scripts.csp (ну логично, это разные csp страницы). Т.е. чтоб работал и JS и были доступны методы Cache они должны быть в 1 файле.
False
Почему False? если есть csp страница scripts.csp в ней используется некий джаваскрипт который вызывает метод Cache
Код: plaintext
1.
2.
3.
function f() {
#server(..CacheMethod())#
}
но этого метода в scripts.csp нету, он находится в файле куда scripts.csp будет подключен через <script src="scripts.csp">. У меня так не работает.
...
Рейтинг: 0 / 0
JavaScript и #server()#
    #37327226
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewQwer
Код: plaintext
<CSP:INCLUDE>
вроде пока одно из лучших решений
В своё время пробовали разные варианты... Остановились вот на таком

Код: plaintext
1.
<!--#include virtual="/adm/inc/nmenu.csp"-->
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JavaScript и #server()#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]