PDA

View Full Version : ООП (OOP)-шиза на Javascript



crazy-mike
05-02-2009, 03:46 AM
Вообще-то в JavaScript есть "типа объекты". При этом они могут быть instantiated и non-instantiated. И всё даже чуток похоже на Perl5. Но...:girl_cray2:
Скажем так - хочется допустим "юзать" что-то похожее на *.jar , но на JavaScript (JavaScript по крайней мере не зависит от Java VM на терминале клиента).
В более понятных терминах - библиотеки на JavaScript. И тут начинается что-то прикольное.
namespaces - формально в JavaScript отстуствуют. Приходится использовать "типа объекты".
И даже хочется использовать AJAX внутри своих "типа объектов"...И конечно же сообщения в Error Console браузера при этом могут довести до экстаза.
Кто-нибудь "свои объекты" в JavaScript использует или только "чужие" (из библиотек)?
Если все пользуются только "чужими" - то откуда берутся эти "чужие"?
Я угробил два дня для создания "своих". Впечатления - "незабываемые". Воспоминания прямо таки нахлынули...:grum:

Sixteen
05-02-2009, 07:28 AM
иногда мне кажецца што жабаскрипт придумали какие-то элиены из литающих тарелок

crazy-mike
05-02-2009, 08:13 AM
иногда мне кажецца што жабаскрипт придумали какие-то элиены из литающих тарелок
Мне тоже так кажется.

var aliens = {
nomoney: true,
spaceship: function () {
},
laserCannon: function() {
},
Obama :function() {
}
};

:grum:
Описания функций через запятую!!!! Только aliens могли такое учудить!

Alex_3112
05-04-2009, 02:02 PM
Кто-нибудь "свои объекты" в JavaScript использует или только "чужие" (из библиотек)?
Если все пользуются только "чужими" - то откуда берутся эти "чужие"?

Я пользуюсь и своими, и "чужими". Откуда берутся эти "чужие"... ну, предположим, что jQuery team, как и другие команды, состоят из aliens.

Писать на javascript не люблю, но приходится. Почему не люблю - потому что один дурак на javascript может легко напрограммировать такое, с чем не смогут разобраться и сто мудрецов.

In2HiDef
05-04-2009, 02:33 PM
Почему не люблю - потому что один дурак на javascript может легко напрограммировать такое, с чем не смогут разобраться и сто мудрецов.
Гггг, вспомнил, как разбирался в ДжС написанном сотней дураков на хинду.

crazy-mike
05-04-2009, 02:55 PM
Я пользуюсь и своими, и "чужими". Откуда берутся эти "чужие"... ну, предположим, что jQuery team, как и другие команды, состоят из aliens.

Я даже не уверен в том - что вообще имеет смысл пользоваться чем-то "чужим". Надо было мне написать что-то со сворачивающимися/разворачивающимися деревьями. Начал искать - чем бы попользоваться. Нашел и это jQuery, и ещё какую-то хреновину. Но там приходилось 1 мегабайт цеплять к странице. Взял - просто написал свою (300 байт в архиве *.js.gz). - обработка "свернуть/развернуть". (всё остальное - теги div,css2, серверный скрипт) :grum: А в нормальном Java для этого вообще класс JTree есть и мучаться особенно не надо (почти).
Даже если всё полностью делать на JavaScript (почти по максимуму) , то создание Tree Control не будет занимать больше 2K. Но совсем не мегабайт! :grum:

смешно
05-04-2009, 03:08 PM
Пользуюсь очень лимитированно, в основном для валидации на формах или кое какие расчёты калькулейшн на эвенты, поп ап окошки. Ну и календарик....без него никак!

crazy-mike
05-04-2009, 03:18 PM
Пользуюсь очень лимитированно, в основном для валидации на формах или кое какие расчёты калькулейшн на эвенты, поп ап окошки. Ну и календарик....без него никак!
Ну там есть одна "шутка юмора". Если код страницы вообще-то можно писать почти полностью на Javascript.
Ну - пустое "тело страницы" с <body onload="doIt()" > </body>.
Ну а где-то там внутри a=document.createElement("..."); document.body.appendChild(a); И т.д.
При этом код страницы может быть намного короче чем "просто html". Кроме того в этом случае вид страницы будет строиться "одинаково" -
почти во всех браузерах (даже в Google Chrome :grum: ). Но ни один "веб дизайнер" в такой странице вообще никогда ничего не поймёт. И редакторы WYSIWYG с ней работать не смогут! :grum: Но читаться и восприниматься "девелопером" она будет намного проще и "логичнее". :popcorn:

смешно
05-04-2009, 03:30 PM
Ну там есть одна "шутка юмора". Если код страницы вообще-то можно писать почти полностью на Javascript.
Ну - пустое "тело страницы" с <body onload="doIt()" > </body>.
Ну а где-то там внутри a=document.createElement("..."); document.body.appendChild(a); И т.д.
При этом код страницы может быть намного короче чем "просто html". Кроме того в этом случае вид страницы будет строиться "одинаково" -
почти во всех браузерах (даже в Google Chrome :grum: ). Но ни один "веб дизайнер" в такой странице вообще никогда ничего не поймёт. И редакторы WYSIWYG с ней работать не смогут! :grum: Но читаться и восприниматься "девелопером" она будет намного проще и "логичнее". :popcorn:

Симпатичные формы проще и БЫСТРЕЕ создавать используя MS Expression Web. У меня нету времени ковыряться в скриптах. :grum: :)

crazy-mike
05-04-2009, 03:37 PM
Симпатичные формы проще и БЫСТРЕЕ создавать используя MS Expression Web. У меня нету времени ковыряться в скриптах. :grum: :)
Веб-редакторы просто не успевают за новыми возможностями языков.
JavaScript таки эволюционировал с 1985го года. :grum:

смешно
05-04-2009, 03:38 PM
Веб-редакторы просто не успевают за новыми возможностями языков.
JavaScript таки эволюционировал с 1985го года. :grum:

Зато HTML хоть и видоизменился, но не настолько...:grum:

Alex_3112
05-04-2009, 03:39 PM
Но там приходилось 1 мегабайт цеплять к странице.
В этом беда всех пакетов и библиотек - иногда приходится стрелять из пушки по воробьям. Но у наших страниц объем Javascript такой, что использование сторонних библиотек совершенно оправданно. В противном случае придется писать что-то монстроидальное (что в конечном счете окажется таким же jQuery), и всех новых дизайнеров месяц учить, как этим пользоваться.

crazy-mike
05-04-2009, 03:43 PM
Зато HTML хоть и видоизменился, но не настолько...:grum:
Ну - угловые скобки конечно же "уцелели". Но вот всё остальное...:grum:

Alex_3112
05-04-2009, 03:44 PM
А вообще, "ООП" у меня по старинке ассоциируется с "Организацией Освобождения Палестины" :wink1:

crazy-mike
05-04-2009, 03:46 PM
и всех новых дизайнеров месяц учить, как этим пользоваться.
Так ведь в том и всё дело!
"Типа веб-дизайн" закономерно трансформировался в разработку сетевых приложений. И эти "дизайнеры" остались как бы "не при делах". Дизайн и программирование - как бы взаимно-противоречивые вещи.
Тем более - что "программирование" притащило в эту область стандарт CUA. В результате дизайнерам остаётся только "картинки рисовать". :grum::grum::grum:

crazy-mike
05-04-2009, 03:49 PM
А вообще, "ООП" у меня по старинке ассоциируется с "Организацией Освобождения Палестины" :wink1:
PLO - эта , которая с Палестиной (PL/1 Optimized Compiler :grum: )

смешно
05-04-2009, 04:06 PM
Ну - угловые скобки конечно же "уцелели". Но вот всё остальное...:grum:


А, ну да, таблицы уже не так популярны, модно <DIV... :grum:

И название придумали xhtml ...:grum:

правда editable dropdown list всё ещё не сделали...

crazy-mike
05-05-2009, 04:18 AM
А, ну да, таблицы уже не так популярны, модно <DIV... :grum:

И название придумали xhtml ...:grum:

правда editable dropdown list всё ещё не сделали...
Ну - не то чтобы совсем уж не сделали. Есть XUL вот...:grum:
А через div таблички и в самом деле компактнее рисуются. Особенно - когда с p { display :table-cell; } :grum:

смешно
05-05-2009, 08:05 AM
Ну - не то чтобы совсем уж не сделали. Есть XUL вот...:grum:
А через div таблички и в самом деле компактнее рисуются. Особенно - когда с p { display :table-cell; } :grum:

Does it supported by IE? :grum:

<menulist editable="true">

crazy-mike
05-05-2009, 08:43 AM
Does it supported by IE? :grum:

<menulist editable="true">
Наверное плагины есть. Хотя Mozilla Firefox скорее становится "стандартом де-факто" (fucked standard :grum:) , а совсем не хронически глючный IE. :grum:
Я тоже не использую XUL (пока - по крайней мере). Как прочитал когда-то о том как оно "преобразуется" потом через XSLT - мне на это даже смотреть расхотелось. Но вообще-то editable menulist можно даже на JavaScript написать и загнать его в несколько "объектов" , а "объекты" в какой-нибудь архив. Не такое уж оно и длинное будет (около 5K - наверное , а может быть и намного короче).

смешно
05-05-2009, 09:08 AM
Наверное плагины есть. Хотя Mozilla Firefox скорее становится "стандартом де-факто" (fucked standard :grum:) , а совсем не хронически глючный IE. :grum:
Я тоже не использую XUL (пока - по крайней мере). Как прочитал когда-то о том как оно "преобразуется" потом через XSLT - мне на это даже смотреть расхотелось. Но вообще-то editable menulist можно даже на JavaScript написать и загнать его в несколько "объектов" , а "объекты" в какой-нибудь архив. Не такое уж оно и длинное будет (около 5K - наверное , а может быть и намного короче).

Это я знаю, но вопрос был о стандартном HTML (or what ever) теге. :)
В корпорациях FireFox не очень используется.
Если честно, то мне IE больше нравится для бизнес приложений.

crazy-mike
05-05-2009, 09:26 AM
Это я знаю, но вопрос был о стандартном HTML (or what ever) теге. :)
В корпорациях FireFox не очень используется.
Если честно, то мне IE больше нравится для бизнес приложений.
Интересно - а какой "HTML" вообще является "стандартным"? :vacation:
( Там ведь в DOCTYPE задётся ссылка на "парсер" - вообще говоря ).
:grum:
WML - вот к примеру есть...:grum: Его все мобилки с доступом в Интернет "понимают" (их браузеры). Правда там вместо JavaScript используется WMLscript...

смешно
05-05-2009, 10:57 AM
Интересно - а какой "HTML" вообще является "стандартным"? :vacation:
( Там ведь в DOCTYPE задётся ссылка на "парсер" - вообще говоря ).
:grum:
WML - вот к примеру есть...:grum: Его все мобилки с доступом в Интернет "понимают" (их браузеры). Правда там вместо JavaScript используется WMLscript...

Для меня лично "стандарт" это всё то, что поддерживает IE. :grum:

crazy-mike
05-05-2009, 05:24 PM
Для меня лично "стандарт" это всё то, что поддерживает IE. :grum:
www.w3c.org ? :vacation:
IE8 - они там "типа думают", что "соответствуют". Хотя это совсем даже не так.
Но DOM API для JavaScript там "почти не отличается от нормального" (за исключением AJAX).
И в какой-то мере результат работы чего-то , написаного на Javascript , выглядит почти одинаково во всех браузерах с поддержкой DOM API для JavaScript. И "ошибок разметки" в случае использования JavaScript для построения тела страницы вместо "обычной разметки" - намного меньше (их просто не может быть в этом случае). :grum:

crazy-mike
05-06-2009, 05:30 AM
А пользоваться в одном окне функциями из другого окна - это уже в "нормальном HTML" просто не получится. А в JavaScript кое-как выходит.
:grum:

смешно
05-07-2009, 04:32 PM
javascript нужная штука, особенно, когда надо показать юзеру alert. :grum:

смешно
05-07-2009, 04:33 PM
www.w3c.org (http://www.w3c.org) ? :vacation:
IE8 - они там "типа думают", что "соответствуют". Хотя это совсем даже не так.
Но DOM API для JavaScript там "почти не отличается от нормального" (за исключением AJAX).
И в какой-то мере результат работы чего-то , написаного на Javascript , выглядит почти одинаково во всех браузерах с поддержкой DOM API для JavaScript. И "ошибок разметки" в случае использования JavaScript для построения тела страницы вместо "обычной разметки" - намного меньше (их просто не может быть в этом случае). :grum:

пока на IE7, всё хорошо. Love it! Правда в FireFox выглядит чуть-чуть по другому, но мне пофиг.

смешно
05-07-2009, 04:36 PM
Майки, прикинь, у меня HTML вместе с JavaScript executed в Oracle PL/SQL (stored procedure).
Я вот думаю, можно ли передать параметры из javascript в PL/SQL....:grum:

Из PL/SQL в JavaScript - легко, а вот наоборот....

crazy-mike
05-08-2009, 01:29 AM
Майки, прикинь, у меня HTML вместе с JavaScript executed в Oracle PL/SQL (stored procedure).
Я вот думаю, можно ли передать параметры из javascript в PL/SQL....:grum:

Из PL/SQL в JavaScript - легко, а вот наоборот....
А что там трудного? У меня php из JavaScript через AJAX запрос вызывается (и Perl тоже). Просто в серверном скрипте надо вызвать PL/SQL. :grum:Можно и без AJAX - просто: a=document.createElement("form"); И где-то потом a.submit();
:grum:

смешно
05-08-2009, 03:59 PM
А что там трудного? У меня php из JavaScript через AJAX запрос вызывается (и Perl тоже). Просто в серверном скрипте надо вызвать PL/SQL. :grum:Можно и без AJAX - просто: a=document.createElement("form"); И где-то потом a.submit();
:grum:


"серверный скрипт" (это Oracle stored procedure) написан в таком типе:

begin

htp.p('<HTML>......');

select blabla
into l_auuu
from table where ...;

if l_auuu = 'hello' then
htp.p('<SCRIPT LANGUAGE="JavaScript1.1">
{ parent.history.back();
alert(''Invalid ....', please select valid ...'');}
</SCRIPT>');
return;
end if;

htp.p(' .....');

end;

:grum:

crazy-mike
05-08-2009, 04:40 PM
"серверный скрипт" (это Oracle stored procedure) написан в таком типе:

begin

htp.p('<HTML>......');

select blabla
into l_auuu
from table where ...;

if l_auuu = 'hello' then
htp.p('<SCRIPT LANGUAGE="JavaScript1.1">
{ parent.history.back();
alert(''Invalid ....', please select valid ...'');}
</SCRIPT>');
return;
end if;

htp.p(' .....');

end;

:grum:
Особой роли не играет. Лишь бы к этой хреновине можно было обращаться по http://somewhere.something.doit?a= &b=... :grum:
Или поддерживались бы адреса: oracle://...... :grum:

смешно
05-11-2009, 02:15 PM
Особой роли не играет. Лишь бы к этой хреновине можно было обращаться по http://somewhere.something.doit?a= &b=... :grum:
Или поддерживались бы адреса: oracle://...... :grum:


К этой дуре очень легко обратиться, прямо из браузера...по названию процедуры и параметры можно передавать....даже из HTML формы <FORM ACTION="название процедуры".

Lor
05-11-2009, 02:22 PM
Самое интересное, что многие Javascripts действительно работают. :oo:

P.S. У меня тоже очень часто возникает желание убить разработчиков.

crazy-mike
05-11-2009, 04:33 PM
Самое интересное, что многие Javascripts действительно работают. :oo:

P.S. У меня тоже очень часто возникает желание убить разработчиков.
За совмещение описания класса с конструктором класса - убивать надо медленно и мучительно. :grum:


function KillDeveloper(yoyo) {
this.developer=yoyo;
this.developerEmail = function() { };
this.kill = function(who) { .... };
}

Ну и где-то a=new KillDeveloper('developer.mozilla.org'); a.kill(); :grum:

Alex_3112
05-12-2009, 01:42 PM
За совмещение описания класса с конструктором класса - убивать надо медленно и мучительно. :grum:

А что делать за то, когда класс еще долго после вызова конструктора продолжает "конструироваться"? ;)

crazy-mike
05-12-2009, 02:35 PM
А что делать за то, когда класс еще долго после вызова конструктора продолжает "конструироваться"? ;)
И за это тоже.
И за popup windows , которые куда-то "за браузер" умудряются спрятаться и которые потом надо "отлавливать" и закрывать принудительно. :grum:
var a=null;
И где-то:
if(a) if(a.closed==false) a.close();
a=window.open("killjavascriptdeveloper.html","killjs");:grum:

crazy-mike
05-21-2009, 06:09 AM
:vacation: А за "сферу действия описания переменных" в этом JavaScript кого надо бы убить?
когда функцию
function retA()
{ a=[ 5,4,3,2,1];
return a;
}
- написанную на одной странице (в открытом окне) -
можно использовать в другом документе , открытом в другом окне , при обращении из этого окна.
d=window.opener.retA();
:grum:
И соответственно изменять данные внутри "родителя".

algoritm
06-13-2009, 09:19 AM
Появилась интересная задумка, как выполнить это программно с помощью обычных мощных языков программирования понятно, но попробовать сделать гугл гаджет эффектнее,

задача такая :

есть сайт site1 у которого есть много div элементов id которых надо получить, :cranky: :grum:
сайт можно отобразить во фрейме другого сайта site2, :popcorn: :grum:
или отобразить в виде объекта или ещё как-то подключить, :v: :grum:
использовать при этом dom html javascript xml так чтобы удобно собрать гугл гаджет, :respect: :grum:

это основная часть + ..., :confused: :grum:
и в ходе предварительного анализа стало ясно что site1 при отображении во фрейме заново самостоятельно автоматически раскрывается на весь экран :fool1: :grum:

какие идеи :?: :cheer:

crazy-mike
06-13-2009, 09:40 AM
какие идеи :?: :cheer:
Для начала - хватит и id одного div.
всё остальное - по document.getElementById("ff").childNodes == примерно так...:grum:
А если для iframe ещё и style="visibility :none" сделать или даже лучше "display :none" - то ничего на весь экран и не раскроется.
:popcorn:
Там ещё один фокус есть - для того чтобы лазить по другой странице внутри iframe - намного проще всё делать , если внутри кода той страницы написаны функции для "вынимания элементов".
:grum:
Но если хочется "позлодействовать" - то
проще вот так:
a=window.xframe; // iframe
b=a.document.body.childNodes; // это и есть вся "чужая страница" :grum:
// Ну и можно "насиловать чужой сайт" - сколько понравится.
// Но скорее всего номер не пройдёт (В ранних версиях Opera 9.6-9.5 срабатывала как бы "защита контента" :grum: ) - если внутри кода загруженной внутри iframe страницы нет функций - возвращающих элемент.
Я пользуюсь такими разновидностями "callback"-ов на своих собственных страничках внутри iframe - и под Opera, Chrome, Mozilla Firefox - всё это работает.
Т.е. данные на одной страничке изменяются из другой - но через "разрешённые функции" на этой первой. :grum:
:evillaugh: Внутри кода "чужой страницы" должна быть функция
function getIt()
{ return document.body.childNodes;
}
// :grum:
Кстати - функции создания элементов дерева документа тоже лучше разместить там же (одной общей для "доступа" к document.createElement должно хватать ).
:27:
Ну как бы function propagation внутри кода - который "работает внутри iframe". :grum:

algoritm
06-13-2009, 10:25 AM
Для начала - хватит и id одного div.
всё остальное - по document.getElementById("ff").childNodes == примерно так...:grum:
А если для iframe ещё и style="visibility :none" сделать или даже лучше "display :none" - то ничего на весь экран и не раскроется.
:popcorn:
Там ещё один фокус есть - для того чтобы лазить по другой странице внутри iframe - намного проще всё делать , если внутри кода той страницы написаны функции для "вынимания элементов".
:grum:
Но если хочется "позлодействовать" - то
проще вот так:
a=window.xframe; // iframe
b=a.document.body.childNodes; // это и есть вся "чужая страница" :grum:
// Ну и можно "насиловать чужой сайт" - сколько понравится.
// Но скорее всего номер не пройдёт (В ранних версиях Opera 9.6-9.5 срабатывала как бы "защита контента" :grum: ) - если внутри кода загруженной внутри iframe страницы нет функций - возвращающих элемент.
Я пользуюсь такими разновидностями "callback"-ов на своих собственных страничках внутри iframe - и под Opera, Chrome, Mozilla Firefox - всё это работает.
Т.е. данные на одной страничке изменяются из другой - но через "разрешённые функции" на этой первой. :grum:
:evillaugh: Внутри кода "чужой страницы" должна быть функция
function getIt()
{ return document.body.childNodes;
}
// :grum:
Кстати - функции создания элементов дерева документа тоже лучше разместить там же (одной общей для "доступа" к document.createElement должно хватать ).
:27:
Ну как бы function propagation внутри кода - который "работает внутри iframe". :grum:
Конкретно site1 реально существует :rofl: :grum:, это сайт социальной сети :grum:, это вообще всё реально сейчас так :rofl: :grum:, site1 проект сторонних разработчиков, редактирование :cranky: исключается, arrrg crazy-mike http://www.instantsmileys.com/smileys/pirate-smiley-12.gif :rofl: :grum:, подходят только легальные способы, менять и редактировать сам фрейм или тому подобное и сам site2 можно полностью. :grum: Подобный вопрос много обсуждается в сети потом напишу примеры "планов решения" и обсуждений, всё напрямую относится к javascript и html. :rofl: :grum: :cheer:

crazy-mike
06-13-2009, 11:59 AM
При отключенной "защите от мошенничества" и без дополнительного кода внутри чужого сайта всё должно работать. Весь прикол в том - что для iframe у родителя не обрабатывается событие onload. K-meleon - в этом браузере любая пакость такого рода будет работать. :grum:

algoritm
06-13-2009, 12:45 PM
При отключенной "защите от мошенничества" и без дополнительного кода внутри чужого сайта всё должно работать. Весь прикол в том - что для iframe у родителя не обрабатывается событие onload. K-meleon - в этом браузере любая пакость такого рода будет работать. :grum:
Например этот код в аи7 не работает, в гугл хроме работает только если фрейм на том же сайте, либо это относительно id пишется по-другому.
<html>
<head>
<script type="text/javascript">
function getText() {
var x = document.getElementById("frame1").contentDocument;
alert(x.getElementsByTagName("h3")[0].childNodes[0].nodeValue); }
</script>
</head>
<body>
<iframe src="frame_a.htm" id="frame1" ></iframe>
<br /><br />
<input type="button" onclick="getText()" value="Get text" />
</body>
</html>
http://www.w3schools.com/js/tryit.asp?filename=try_dom_iframe_contentdocument
:grum: :cheer:

algoritm
06-13-2009, 01:13 PM
продолжаем, итак получилось что одним из вариантов доступа к содержимому фрейма оказался contentdocument который
The contentDocument property returns the iframe's document as an HTML object. The returned object can be processed with all standard DOM methods.
Some DOM methods:
x.getElementById(id) - get the element with a specified id
x.getElementsByTagName(name) - get all elements with a specified tag name
x.appendChild(node) - insert a child node to x
x.removeChild(node) - remove a child node from x
Note: In the list above, x is a node object (HTML element)
:cheer:

algoritm
06-13-2009, 01:28 PM
А если для iframe ещё и style="visibility :none" сделать или даже лучше "display :none" - то ничего на весь экран и не раскроется. :popcorn:
Всё равно на весь экран открывается, может пишется по-другому. :cheer:

algoritm
06-13-2009, 01:48 PM
contentDocument
это новое свойство в аи8
http://msdn.microsoft.com/en-us/library/cc196985(VS.85).aspx

есть также contentWindow
возвращает window object какого-либо frame или iframe
http://msdn.microsoft.com/en-us/library/ms533692(VS.85).aspx
:cheer:

crazy-mike
06-13-2009, 03:05 PM
Всё равно на весь экран открывается, может пишется по-другому. :cheer:
Не бывает такого. :vacation:
Делай не в IE - а для Mozilla compatible (Gecko-based) браузера (для любого без ActiveX - фактически :grum:).
Block Popups - вообще-то надо отключить хотя бы для теста.
Fraud Protection - тоже.
Проверь - или "чужой сайт" не использует MacroMedia Flash или Java-апплеты (может быть в них - причина "дурдома").

crazy-mike
06-13-2009, 03:07 PM
contentDocument
это новое свойство в аи8
http://msdn.microsoft.com/en-us/library/cc196985(VS.85).aspx (http://msdn.microsoft.com/en-us/library/cc196985%28VS.85%29.aspx)

есть также contentWindow
возвращает window object какого-либо frame или iframe
http://msdn.microsoft.com/en-us/library/ms533692(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms533692%28VS.85%29.aspx)
:cheer:
IE8 - ф топку!!!!!!!! , MSDN - в крематорий!!!! :grum:
Только
http://developer.mozilla.org
http://www.w3c.org
http://www.w3schools.com
:grum:

crazy-mike
06-13-2009, 03:20 PM
Например этот код в аи7 не работает, в гугл хроме работает только если фрейм на том же сайте, либо это относительно id пишется по-другому.
<html>
<head>
<script type="text/javascript">
function getText() {
var x = document.getElementById("frame1").contentDocument;
alert(x.getElementsByTagName("h3")[0].childNodes[0].nodeValue); }
</script>
</head>
<body>
<iframe src="frame_a.htm" id="frame1" ></iframe>
<br /><br />
<input type="button" onclick="getText()" value="Get text" />
</body>
</html>
http://www.w3schools.com/js/tryit.asp?filename=try_dom_iframe_contentdocument
:grum: :cheer:
Код - с ошибками!!!! Тип документа для страницы не указан.
Для начала правильный DOCTYPE укажи!!!!!! С ним связаны DOM namespaces.
А IE8,IE7,IE6 - сотри вообще!!!!!!
:grum:
Если DOCTYPE не указан - то HTML 3.1 accepted. :grum:
А тебе нужен XHTML 1.0 Transitional :evillaugh:
a=document.getElementsByTagName("h3");
v=a.item(0); d=v.childNodes; // примерно так :grum:

algoritm
06-14-2009, 02:58 PM
Не бывает такого. :vacation:
Делай не в IE - а для Mozilla compatible (Gecko-based) браузера (для любого без ActiveX - фактически :grum:).
Block Popups - вообще-то надо отключить хотя бы для теста.
Fraud Protection - тоже.
Проверь - или "чужой сайт" не использует MacroMedia Flash или Java-апплеты (может быть в них - причина "дурдома").
Site1 это вот эта страница сайта майспейс
friends.myspace.com/index.cfm?fuseaction=user.viewfriends&friendId=SOME_ID&p=SOME_PAGE
где SOME_ID это номер id пользователя чей профайл показывает друзей,
SOME_PAGE это номер страницы просмотра друзей. :grum: :cheer:

crazy-mike
06-15-2009, 08:51 AM
Site1 это вот эта страница сайта майспейс
friends.myspace.com/index.cfm?fuseaction=user.viewfriends&friendId=SOME_ID&p=SOME_PAGE
где SOME_ID это номер id пользователя чей профайл показывает друзей,
SOME_PAGE это номер страницы просмотра друзей. :grum: :cheer:
:shy:
Кстати - для тега iframe аттрибуты width и height надо обязательно указывать. Если их не указать - то он может и на весь экран...:grum:

algoritm
06-15-2009, 01:03 PM
:shy:
Кстати - для тега iframe аттрибуты width и height надо обязательно указывать. Если их не указать - то он может и на весь экран...:grum:
Это больше актуально для object чем для iframe,
так как object без этого вообще не отображается. :oo: :cranky: :popcorn: :grum:
И iframe аттрибуты width и height тоже указывал, в лучшем случае site1 отображался во фрейме а потом снова вылетал на весь экран. :grum: :cheer:

algoritm
06-15-2009, 01:12 PM
Пробовал и такое
<html>
<head>
</head>
<body>

<iframe src="site1" id="fr1" width="2000" height="2000" scrolling="yes" >frame</iframe>

<script type="text/javascript">
var s=document.getelementbyid("fr1").contentdocument;
var t=s.getelementsbytagname("div")[0];
document.write(t.id);
</script>

</body>
</html>
тоже site1 выпрыгивает из фрейма на весь экран и в IE и в Chrome :popcorn: :grum: :cheer:

crazy-mike
06-16-2009, 01:24 AM
Пробовал и такое
<html>
<head>
</head>
<body>

<iframe src="site1" id="fr1" width="2000" height="2000" scrolling="yes" >frame</iframe>

<script type="text/javascript">
var s=document.getelementbyid("fr1").contentdocument;
var t=s.getelementsbytagname("div")[0];
document.write(t.id);
</script>

</body>
</html>
тоже site1 выпрыгивает из фрейма на весь экран и в IE и в Chrome :popcorn: :grum: :cheer:
Ты в самом деле вставляешь <script>...</script> внутри <body> ...</body> или только прикалываешься?...:grum:
Мне тут одна фраза Эдсгера Дейкстры вспомнилась - Невозможно научить программированию студентов , ориентированных изначально на Бейсик. ...они оболванены без надежды на исцеление. :grum:
Я эту фразу когда-то как бы эпиграфом к тексту дипломной сделал. Там еще и немножко листингов с программами на Бейсике было...:grum:
А зачем тебе такой бльшой размер фрейма (2000*2000)? - чтобы браузер заставить "глючить"? Обычно их как раз "маленькими" делают.

algoritm
06-16-2009, 04:55 AM
Ты в самом деле вставляешь <script>...</script> внутри <body> ...</body> или только прикалываешься?...:grum:
Мне тут одна фраза Эдсгера Дейкстры вспомнилась - Невозможно научить программированию студентов , ориентированных изначально на Бейсик. ...они оболванены без надежды на исцеление. :grum:
Я эту фразу когда-то как бы эпиграфом к тексту дипломной сделал. Там еще и немножко листингов с программами на Бейсике было...:grum:
А зачем тебе такой бльшой размер фрейма (2000*2000)? - чтобы браузер заставить "глючить"? Обычно их как раз "маленькими" делают.
А так даже нагляднее и лучше, так что без разницы, в норме оно должно и так работать, и кстати так на очень крутых сайтах тоже делают. :grum:
Вроде читал что когда примут HTML5 тег <html> без <doctype> будет обозначать именно HTML5.
Размер фрейма менял и скролинг тоже. :grum: :cheer:

crazy-mike
06-16-2009, 05:05 AM
А так даже нагляднее и лучше
Вообще-то в этом случае скрипт может удалить сам себя:
scr=document.getElementsByTagName("script");
По document.body.removeChild(scr.item(0))
:grum:
И потом будешь очень долго искать - куда он делся...:evillaugh:
А потом ведь ещё и возмущаются - что кто-то их "крутые сайты" как бы "типа ломает"!!!!!!
Да что там ломать - если они изначально поломанные!!!!!!!! :grum:

algoritm
06-16-2009, 05:08 AM
Пробовал и такое
<html>
<head>
</head>
<body>

<iframe src="site1" id="fr1" width="2000" height="2000" scrolling="yes" >frame</iframe>

<script type="text/javascript">
var s=document.getelementbyid("fr1").contentdocument;
var t=s.getelementsbytagname("div")[0];
document.write(t.id);
</script>

</body>
</html>
тоже site1 выпрыгивает из фрейма на весь экран и в IE и в Chrome :popcorn: :grum: :cheer:
Так как код методов DOM HTML чуствителен к регистру символов то правильно это пишется так :popcorn:
<html>
<head>
</head>
<body>

<iframe src="site1" id="fr1" width="2000" height="2000" >frame</iframe>

<script type="text/javascript">
var s=document.getElementById("fr1").contentDocument;
var t=s.getElementsByTagName("div")[0];
document.write(t.id);
</script>

</body>
</html>
тоже site1 выпрыгивает из фрейма на весь экран и в IE и в Chrome :cheer:

crazy-mike
06-16-2009, 05:13 AM
;
document.write(t.id);

За использование document.write - нужно судить в Гаагском Интернет-трибунале!!!!!!!!!! :grum:

algoritm
06-16-2009, 05:14 AM
Вообще-то в этом случае скрипт может удалить сам себя:
scr=document.getElementsByTag("script");
По document.body.removeChild(scr.item(0))
:grum:
И потом будешь очень долго искать - куда он делся...:evillaugh:
А потом ведь ещё и возмущаются - что кто-то их "крутые сайты" как бы "типа ломает"!!!!!!
Да что там ломать - если они изначально поломанные!!!!!!!! :grum:
Всё оказывается куда более закрученней :oo: :cranky:, при некоторых модификациях выдаётся ошибка со ссылкой на KB927917 "Message: HTML Parsing Error: Unable to modify the parent container
element before the child element is closed " :popcorn: :grum:

algoritm
06-16-2009, 05:16 AM
За использование document.write - нужно судить в Гаагском Интернет-трибунале!!!!!!!!!! :grum:
Это нормальная функция document которая к тому же используется для модификации отображаемого текста :cranky: :grum: :cheer:

crazy-mike
06-16-2009, 05:22 AM
Это нормальная функция document которая к тому же используется для модификации отображаемого текста :cranky: :grum: :cheer:
Это неправильный ответ!
element.textContent="типа модифицированный текст";
:popcorn:
А ещё есть и очень "строгое решение":
a=document.createTextNode("модифицированный текст");
element.appendChild(a); :grum:
:evillaugh:
Существует довольно много причин - по которым книжки с названием "JavaScript для чайников" имеет смысл сжигать на одном костре вместе с их авторами!!!!! :grum:

algoritm
06-16-2009, 05:32 AM
Например этот код в аи7 не работает, в гугл хроме работает только если фрейм на том же сайте, либо это относительно id пишется по-другому.
<html>
<head>
<script type="text/javascript">
function getText() {
var x = document.getElementById("frame1").contentDocument;
alert(x.getElementsByTagName("h3")[0].childNodes[0].nodeValue); }
</script>
</head>
<body>
<iframe src="frame_a.htm" id="frame1" ></iframe>
<br /><br />
<input type="button" onclick="getText()" value="Get text" />
</body>
</html>
http://www.w3schools.com/js/tryit.asp?filename=try_dom_iframe_contentdocument
:grum: :cheer:
этот код в IE8 не работает тоже "'undefined' - есть null или не является объектом" :cheer:

algoritm
06-16-2009, 05:41 AM
Это неправильный ответ!
element.textContent="типа модифицированный текст";
:popcorn:
А ещё есть и очень "строгое решение":
a=document.createTextNode("модифицированный текст");
element.appendChild(a); :grum:
:evillaugh:
Существует довольно много причин - по которым книжки с названием "JavaScript для чайников" имеет смысл сжигать на одном костре вместе с их авторами!!!!! :grum:
Вполне нормальная функция document.write() очень удобно и упорядоченно :grum: :popcorn: :cheer:

crazy-mike
06-16-2009, 06:24 AM
Вполне нормальная функция document.write() очень удобно и упорядоченно :grum: :popcorn: :cheer:
document.clear() // deprecated
- верх упорядоченности! :grum:

algoritm
06-16-2009, 06:54 AM
document.clear() // deprecated
- верх упорядоченности! :grum:
А с какой стати веб дизайнеры должны создавать ещё один child object чтобы модифицировать данные, а не модифицировать сразу parent object :?: :grum: :cheer:

algoritm
06-16-2009, 07:03 AM
Ты в самом деле вставляешь <script>...</script> внутри <body> ...</body> или только прикалываешься?...:grum:
Мне тут одна фраза Эдсгера Дейкстры вспомнилась - Невозможно научить программированию студентов , ориентированных изначально на Бейсик. ...они оболванены без надежды на исцеление. :grum:
Я эту фразу когда-то как бы эпиграфом к тексту дипломной сделал. Там еще и немножко листингов с программами на Бейсике было...:grum:
А зачем тебе такой бльшой размер фрейма (2000*2000)? - чтобы браузер заставить "глючить"? Обычно их как раз "маленькими" делают.
А что разьве в вузах изучают программирование ? Человек который прочтет хорошую книгу или сайт узнает больше и не потратит так много времени. :grum: :cheer:

crazy-mike
06-16-2009, 12:55 PM
А что разьве в вузах изучают программирование ?
Удивишься - но когда-то по крайней мере изучали (Computer Science - как минимум, но есть ещё и "кусочек математики" под названием "Теоретическое программирование" (там много всего намешано из теории алгоритмов , теории графов и т.д.) ). :popcorn:

crazy-mike
06-16-2009, 12:56 PM
А с какой стати веб дизайнеры должны создавать ещё один child object чтобы модифицировать данные, а не модифицировать сразу parent object :?: :grum: :cheer:
веб-дизайнеров - ф топку!!!!!! (вместе с их творениями - а деньги пусть в фонд спасения белых медведей передадут :grum: )

algoritm
06-16-2009, 01:25 PM
веб-дизайнеров - ф топку!!!!!! (вместе с их творениями - а деньги пусть в фонд спасения белых медведей передадут :grum: )
Не их в топку не надо если их понимать как направление программирования они очень нужны, а с arts интернет более интересный :grum: :cheer:

algoritm
06-16-2009, 01:46 PM
Сейчас также становятся популярными OpenSocial и MyOpenSpace
http://en.wikipedia.org/wiki/OpenSocial
http://wiki.developer.myspace.com/index.php?title=Category:MyOpenSpace
:cheer:

crazy-mike
06-17-2009, 01:52 AM
Не их в топку не надо если их понимать как направление программирования они очень нужны, а с arts интернет более интересный :grum: :cheer:
Надо!!!!!
Web OS - это Engineering!!!!!!!!!!!!!!!!!!!!!!! :grum:

algoritm
06-21-2009, 09:55 AM
Надо!!!!!
Web OS - это Engineering!!!!!!!!!!!!!!!!!!!!!!! :grum:
Content то есть содержание сайтов обеспечивают веб дизайнеры и поэтому они очень нужны :popcorn: :grum:, а Web OS это другая тема :grum: :cheer:

algoritm
06-21-2009, 10:00 AM
Интересно что в выражениях на Javascript, если пишутся кавычки внутри других кавычек то иногда одинаковые A(" B(" C ") ") не срабатывают ( IE8 ), то есть чтобы выражение работало надо A(" B(' C ') ") или A(' B(" C ") ') вот так то :!: :cranky: :oo: :popcorn: :grum: :cheer:

crazy-mike
06-21-2009, 01:12 PM
Content то есть содержание сайтов обеспечивают веб дизайнеры и поэтому они очень нужны :popcorn: :grum:, а Web OS это другая тема :grum: :cheer:
Просто картинки и рекламу можно и на Flickr выставлять. :grum:
А вебсайты - это front-end корпоративных сетевых сервисов. И в требованиях там основным является функциональность и удобство работы - а не загрузка рекламных роликов (которые ещё и грузятся по 5-6 минут даже на мегабитных соединениях - только потому что веб-дизайнеру захотелось "поюзать CMS" , например - а о "правильном использовании" CSS2 этот "типа web destroyer" малейшего понятия не имеет. :grum:

crazy-mike
06-21-2009, 01:15 PM
Интересно что в выражениях на Javascript, если пишутся кавычки внутри других кавычек то иногда одинаковые A(" B(" C ") ") не срабатывают ( IE8 ), то есть чтобы выражение работало надо A(" B(' C ') ") или A(' B(" C ") ') вот так то :!: :cranky: :oo: :popcorn: :grum: :cheer:
Вам сейчас двойки (по пятибалльной) или девятки (по стобалльной системе) ставят? :grum:
Есть ведь и вариант A("B(\"C\")") :grum:

algoritm
06-21-2009, 01:31 PM
Вам сейчас двойки (по пятибалльной) или девятки (по стобалльной системе) ставят? :grum:
Есть ведь и вариант A("B(\"C\")") :grum:
По любому это могло бы работать и так A(" B(" C ") "), а вариант A("B(\"C\")") ещё смешнее :grum:, кроме того это в том случае тоже не работает, видимо немножко не тот вопрос :popcorn:, там типа выражение

"document.write("some_words")" - не работает,
"document.write('some_words')" - работает,
'document.write("some_words")' - работает,

а главное нигде об этом в основных правилах не сказано, и вообще это как-то примитивно. :grum: :cheer:

algoritm
06-21-2009, 01:57 PM
Просто картинки и рекламу можно и на Flickr выставлять. :grum:
А вебсайты - это front-end корпоративных сетевых сервисов. И в требованиях там основным является функциональность и удобство работы - а не загрузка рекламных роликов (которые ещё и грузятся по 5-6 минут даже на мегабитных соединениях - только потому что веб-дизайнеру захотелось "поюзать CMS" , например - а о "правильном использовании" CSS2 этот "типа web destroyer" малейшего понятия не имеет. :grum:
Сейчас сайт в норме это такое взаимодействие с информацией с определенной частью интернета которое как бы может идти постоянно :popcorn:, поэтому ролики и другой контент вообще могут подгружаться и меняться постоянно :grum: :cheer:

crazy-mike
06-21-2009, 01:57 PM
По любому это могло бы работать и так A(" B(" C ") "), а вариант A("B(\"C\")") ещё смешнее :grum:, кроме того это в том случае тоже не работает, видимо немножко не тот вопрос :popcorn:, там типа выражение

"document.write("some_words")" - не работает,
"document.write('some_words)" - работает,
'document.write("some_words")' - работает,

а главное нигде об этом в основных правилах не сказано, и вообще это как-то примитивно. :grum: :cheer:
Не "примитивно" - а оптимизировано для работы LL или LR(1) анализатора. :grum:
Но document.write - это варварство!!!!

algoritm
06-21-2009, 02:09 PM
Не "примитивно" - а оптимизировано для работы LL или LR(1) анализатора. :grum:
Но document.write - это варварство!!!!
HTML DOM & document.write - это правильно :grum:, а это HTML parser & SGML parser :!:
http://www.w3.org/Library/src/HTML.html
http://www.w3.org/Library/src/SGML.html
:cheer:

crazy-mike
06-21-2009, 02:17 PM
HTML DOM & document.write - это правильно
С точки зрения "инженерного здравого смысла" - неправильно!
document.write уничтожает уже загруженную структуру документа.

algoritm
06-21-2009, 02:41 PM
С точки зрения "инженерного здравого смысла" - неправильно!
document.write уничтожает уже загруженную структуру документа.
Так это нормально, это даже нужно для конструктора сайта :popcorn:, браузеры в принципе могут в параметрах ограничивать и разрешать особенные выражения :grum:, ещё значительней является передача файлов и т.д., то есть взаимодествие OS и браузеров :grum:, браузеры в принципе могут даже анализировать слишком затянувшееся открытие страницы сайта и предлагать варианты действий :grum:, а OS вообще в сомнительных случаях действовать с подтверждения пользователей. :grum: :cheer:

crazy-mike
06-22-2009, 04:28 AM
браузеры в принципе могут даже анализировать слишком затянувшееся открытие страницы сайта
Safari так делает со скриптами - которые "слишком долго выполняются".
:grum:

Olezhik
06-26-2009, 09:37 PM
Обожаю [JS] ненавижу чужие библиотеки. Отвечяю на товй вопрос я всегда использовал и писал свой библиотете. Но последние время стла использовать таким библиотекам как ЖЕЙквери и Яху, нехочица отстовать от совремной технологий. Скажу тебе честно когда появился [IE4] библиотек вобше небыло, за-то было дофига возможности. Так как появилась такая фигня как [DHTML] и спомощю [JS] можно было творить чудеса. Все компаний сразу откозались от тежолых Жаба-Эплэтов и активЭКС контролев и стали писать в [JS]. Самы серьёзны проэкт в [JS] я писал для http://i21.com 2000 год. 3 тысячи линий кодов в [JS] на одной страницы и ничего не висло и не перезагружало память. Тогда ещё такого понятия как [AJAX] небыло, но уже была [JS], [DHTML] и [XML]. Этого было достаточно чтоб создать страничку каторая работала точь в точ как работают сечяс все эти [AJAX] фиговины. Вобщем к чему это я, да [Java Script] рулит и не стареет.

Alex_3112
06-27-2009, 12:16 AM
Тогда ещё такого понятия как [AJAX] небыло, но уже была [JS], [DHTML] и [XML].
А как же с помощью JS к серверу (в обход AJAX) обращаться?

crazy-mike
06-27-2009, 01:01 AM
А как же с помощью JS к серверу (в обход AJAX) обращаться?
Можно довольно идиотским способом:
f=document.createElement("form");
......
f.submit();
:grum:
Просто ответ сервера будет - страничка с обработчиком onload="...".
Но в обрабочике можно вызвать функцию по window.opener.returnResult(...);
И самое шизофреническое - что так можно возвращать массивы!!!!!!!!!!!!!! И это ведь совсем не AJAX? Оно так работало и без XMLHttpRequest().

crazy-mike
06-27-2009, 01:12 AM
да [Java Script] рулит и не стареет.
Конечно же рулит. Только очень запутанно рулит. Там можно делать много ну очень странных вещей - которые в Java не так просто нарисовать. Особенно когда скрипты из разных страниц вызывают функции друг из друга и какой-нибудь iframe еще и создан со style="display :none" (и внутри него тоже страничка со скриптом).

algoritm
06-27-2009, 04:18 AM
Конечно же рулит. Только очень запутанно рулит. Там можно делать много ну очень странных вещей - которые в Java не так просто нарисовать. Особенно когда скрипты из разных страниц вызывают функции друг из друга и какой-нибудь iframe еще и создан со style="display :none" (и внутри него тоже страничка со скриптом).
А если что-то типа document.write = function () :popcorn: :rofl: :cheer:

Olezhik
06-27-2009, 11:13 AM
А как же с помощью JS к серверу (в обход AJAX) обращаться?

Вариантов много один из дедовских способов это в [img src ]поставит адрес [.asp, .jsp] или [.php] а потом на клик например сменить этот аддресс на другой. и переслать с этим аддресом всё что не обходимо высота и ширина картинки один пиксал. Можно [iframe] или простыэ совсем уже всеми забытые рамы.

Olezhik
06-27-2009, 11:16 AM
А если что-то типа доцумент.щрите = фунцтион () :попцорн: :рофл: :чеер:

[document.write ] это хошо, ну это уже безбыходная ситуатцыта. Из [document.write ] уже млин не туда и не сюда. Самое лутшее это писать в нутри дивов.


Вот болие не мение новы вариант.


<html>
<head>
<title>Hello World</title>
</head>

<script type="text/javascript">
var my_div = null;
var newDiv = null;

function addNewElement()
{
newDiv = document.createElement("div");
newDiv.innerHTML = "<h1>Hello Russianz!</h1>";

my_div = document.getElementById("org_div1");
document.body.insertBefore(newDiv, my_div);
}

</script>

<body onload="addNewElement()">
<div id='org_div1'> The text above has been created dynamically ;)</div>
</body>
</html>

crazy-mike
06-27-2009, 11:28 AM
[document.write ] это хошо, ну это уже безбыходная ситуатцыта. Из [document.write ] уже млин не туда и не сюда. Самое лутшее это писать в нутри дивов.
document.write вообще вызывало protection exception в промежуточных версиях Opera 9.5. :grum:

Olezhik
06-27-2009, 12:33 PM
Вобщем вот.
Как говоритса, всё понятно без слов. И никакий [jQuery] нафиг не нужны....

html file index.html


<body>
<script type="text/javascript">
var xmlhttp,alerted
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
alert("You must have Microsofts XML parsers available")
}
}
@else
alert("You must have JScript version 5 or above.")
xmlhttp=false
alerted=true
@end @*/
if (!xmlhttp && !alerted) {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
alert("This browser doesn't supports an XMLHttpRequest Object.")
}
}

function RSchange() {
if (xmlhttp.readyState==4) {
document.getElementById('content').innerHTML=xmlht tp.responseText
}
}
function go() {
if (xmlhttp) {
d=document
xmlhttp.open("GET", "test.txt",true);
xmlhttp.onreadystatechange=RSchange
xmlhttp.send(null)
}
}
</script>

The content will appear between here
<div id=content> </div>
and here.<button onclick="go()">Do it</button>

server file test.txt

Hello From test.txt file


Секрета никакого нет ;) XMLHttpRequest Object

crazy-mike
06-27-2009, 01:35 PM
Вобщем вот.
Как говоритса, всё понятно без слов. И никакий [jQuery] нафиг не нужны....
Секрета никакого нет ;)
Да там очень много всего стало как бы "лишним" (не только JQuery :popcorn: ).
Вообще-то все эти html-страницы могли бы существовать даже с "пустым" тегом <body /> , а все делаться при вызове какой-нибудь функции initIt() внутри <script>....</script>. Самое прикольное - что в этом случае все намного проще читать и анализировать - чем всякие смеси "кода html" и "кода скрипта". :grum:
Только отлаживать такое - довольно странный садомазохисткий вид удовольствия.

Olezhik
06-27-2009, 03:58 PM
Да там очень много всего стало как бы "лишним" (не только JQuery :popcorn: ).
Вообще-то все эти html-страницы могли бы существовать даже с "пустым" тегом <body /> , а все делаться при вызове какой-нибудь функции initIt() внутри <script>....</script>. Самое прикольное - что в этом случае все намного проще читать и анализировать - чем всякие смеси "кода html" и "кода скрипта". :grum:
Только отлаживать такое - довольно странный садомазохисткий вид удовольствия.

Я спецально почистил немного этот пример. Для того чтоб было лехче читать и не грузица. Я всегда всё упрощяю когда пишу чтоб другим програмистам было лехко работать с моими кодами. Так что да, ты прав ничего замумного писать ненадо, можно упростить до минимального.


Когда-то давно я зделал календарик с переливными картинками всякими в отдельном окне и в этом окне был только один таг [div] так чтоб если какоита хитры програмист захотел бы украсть у меня кода ничего кроме [div] тага он бы больше ничего не смог бы увидеть.

crazy-mike
06-27-2009, 04:12 PM
Когда-то давно я зделал календарик с переливными картинками всякими в отдельном окне и в этом окне был только один таг [div] так чтоб если какоита хитры програмист захотел бы украсть у меня кода ничего кроме [div] тага он бы больше ничего не смог бы увидеть.
Но дело ведь даже совсем не в "украсть".
Эти новые браузеры (Google Chrome, Safari...) пытаются компилировать JavaScript в промежуточное представление. В JavaScript вообще-то существует подмножество языка - которое можно было бы назвать "гарвардской архитектурой JavaScript" (:grum:). Я имею ввиду то - что если использовать addActionListener и полностью изолировать код JavaScript в "отдельном сегменте кода" - то это и в самом деле должно допускать эффективную компиляцию в байт-код. Кроме того - перенос генерации элементов кода страницы в "сегмент кода JavaScript" должен бы предположительно увеличить скорость "выполнения страницы" в самом браузере (за счет того - что не нужно вызывать parser для html/xhtml). Да и с CSS в этом случае может быть намного меньше возни (скорость загрузки из-за этого может тоже увеличиться - особенно если интернет-провайдер жестоко шейпит скорость коннекта клиента).

Olezhik
06-27-2009, 04:37 PM
Но дело ведь даже совсем не в "украсть".
Эти новые браузеры (Google Chrome, Safari...) пытаются компилировать JavaScript в промежуточное представление. В JavaScript вообще-то существует подмножество языка - которое можно было бы назвать "гарвардской архитектурой JavaScript" (:grum:). Я имею ввиду то - что если использовать addActionListener и полностью изолировать код JavaScript в "отдельном сегменте кода" - то это и в самом деле должно допускать эффективную компиляцию в байт-код. Кроме того - перенос генерации элементов кода страницы в "сегмент кода JavaScript" должен бы предположительно увеличить скорость "выполнения страницы" в самом браузере (за счет того - что не нужно вызывать parser для html/xhtml). Да и с CSS в этом случае может быть намного меньше возни (скорость загрузки из-за этого может тоже увеличиться - особенно если интернет-провайдер жестоко шейпит скорость коннекта клиента).

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

crazy-mike
06-27-2009, 05:01 PM
Незнаю... я вобше против того чтоб придумывать заного колесо. ...
Но ведь не совсем же "заново". Любая программа с какой-либо разновидностью GUI/CUA , которая получает данные из сети или "пишет" куда-то в сеть , является "браузером" (ориентированным на "вид задач").
И вообще - любая операционная система для "сетевого клиента" в этом смысле тоже является "браузером". Поэтому желание сделать JavaScript как бы "полноценным языком программирования" выглядит достаточно логично (и фактически он им уже стал (почти :grum:) ) . По крайней мере "правильно написанные скрипты" на "веб-страничках" могут выглядить как Object Implementation (наверное это так можно назвать).
:evillaugh: Там ведь "Жаба" разродилась мутантом-головастиком по кличке Java FX? - Так что различия между Java и JavaScript потихоньку стираются.

Olezhik
06-27-2009, 07:51 PM
Так что различия между Ява и ЯваСцрипт потихоньку стираются.

[Java] и [Java Skript] совершено два разных языка и даж если эти два языка могут делать оденаковые вещи это не делает их оденаковыми. Всё равно что бы я сказал то же самое о [c#], [c++] или [php]

crazy-mike
06-28-2009, 01:31 AM
[Java] и [Java Skript] совершено два разных языка и даж если эти два языка могут делать оденаковые вещи это не делает их оденаковыми. Всё равно что бы я сказал то же самое о [c#], [c++] или [php]
Пока ещё разные. Но JavaScript делается всё больше похожим на Java. Вот a=new Array(1);
И даже обработка exception есть. И *.gz - это почти *.jar :grum:

Olezhik
06-28-2009, 08:47 AM
Пока ещё разные. Но ЯваСцрипт делается всё больше похожим на Ява. Вот а=нещ Арраы(1);
И даже обработка ехцептион есть. И *.гз - это почти *.яр :грум:

Аха, а русски язык почти украински, а украински почти белоруски, а белоруски это польски, а польски болгарски, а болгарски англиски.

crazy-mike
06-28-2009, 09:04 AM
Аха, а русски язык почти украински, а украински почти белоруски, а белоруски это польски, а польски болгарски, а болгарски англиски.
JavaScript с объектами , AJAX и архивами не так уж сильно отличается от Java-апплетов - точнее , просто становится ну очень сильно похожим на Java (по функциональности). А если ещё и теги canvas (в Mozilla и Opera) вспомнить...Да и SVG в Opera...Конечно же различий много (и многие из них в пользу JavaScript , хотя - если хочется чтобы всё работало одинаково во всех браузерах , то Java всё равно вне конкуренции...:grum: )

Alex_3112
06-28-2009, 10:23 AM
JavaScript с объектами , AJAX и архивами не так уж сильно отличается от Java-апплетов - точнее , просто становится ну очень сильно похожим на Java (по функциональности).
Я тут соглашусь с Олежиком - то, что языки двигаются в одну и ту же сторону, совсем не делает их одинаковыми - базовые принципы как отличались, так и продолжают отличаться.

crazy-mike
06-28-2009, 10:44 AM
базовые принципы как отличались, так и продолжают отличаться.
Constraint Programming и Structured Programming - как бы ещё тоже принадлежат множеству "базовых принципов"?
Просто в JavaScript появляются более удобные средства для поддержания этих "принципов" ( а из Java они куда-то исчезают - там всё становится запутаннее и число используемых классов хаотически возрастает от версии к версии :grum: ).
Конечно различия там всегда будут оставаться.

algoritm
06-28-2009, 11:39 AM
Я тут соглашусь с Олежиком - то, что языки двигаются в одну и ту же сторону, совсем не делает их одинаковыми - базовые принципы как отличались, так и продолжают отличаться.
Приведи пример различий в базовых приципах для c++ и object pascal :cheer:

crazy-mike
06-28-2009, 12:02 PM
Приведи пример различий в базовых приципах для c++ и object pascal :cheer:
c++ - есть множественное наследование
Object Pascal - принципиально нет
:grum:
(как минимум)
:evillaugh: О setjmp,longjmp - даже вспомнить страшно (фишки С/C++)
метки и goto в C++ - wow!!!!

algoritm
06-29-2009, 10:17 AM
c++ - есть множественное наследование
Object Pascal - принципиально нет
:grum:
(как минимум)
:evillaugh: О setjmp,longjmp - даже вспомнить страшно (фишки С/C++)
метки и goto в C++ - wow!!!!
Если говорить по максимуму то принципиальных различий между ними не существует, так как все особенности каждого из них можно обойти с помощью применения ассемблера внутри кода :popcorn:, если и существуют принципиальные различия то в машино-зависимых языках при создании программ для разных процессоров :!: :popcorn: А синтаксис + компиляция + сборка данных и команд кода <=> могут отличаться :popcorn: :grum: Например различие константы NULL в c++ и object pascal :cheer:

crazy-mike
06-29-2009, 10:32 AM
Если говорить по максимуму то принципиальных различий между ними не существует, так как все особенности каждого из них можно обойти с помощью применения ассемблера внутри кода :popcorn:, если и существуют принципиальные различия то в машино-зависимых языках при создании программ для разных процессоров :!: :popcorn: А синтаксис + компиляция + сборка данных и команд кода <=> могут отличаться :popcorn: :grum: Например различие константы NULL в c++ и object pascal :cheer:
inline assembler - это "порочная практика" , противоречащая "духу языка высокого уровня". :grum:
Основная идея ЯВУ (языков высокого уровня) заключалась в упрощении поиска ошибок в программах и в минимизации числа способов создания ошибок в программах.
Но к языку C++ это как бы не относилось. C++ вообще когда-то существовал в виде "препроцессорного расширения языка C". А язык C пытались рассматривать даже как "машинно-независимый ассемблер". :grum:
Поэтому между Object Pascal и C++ - дистанция огромного размера.
:grum:

algoritm
06-29-2009, 10:46 AM
inline assembler - это "порочная практика" , противоречащая "духу языка высокого уровня". :grum:
Основная идея ЯВУ (языков высокого уровня) заключалась в упрощении поиска ошибок в программах и в минимизации числа способов создания ошибок в программах.
Но к языку C++ это как бы не относилось. C++ вообще когда-то существовал в виде "препроцессорного расширения языка C". А язык C пытались рассматривать даже как "машинно-независимый ассемблер". :grum:
Поэтому между Object Pascal и C++ - дистанция огромного размера.
:grum:
Это не совсем так :grum:, без ассемблера языки программирования потеряли бы большую часть своей функциональности и способности создания кода, особенно оптимального кода при создании драйверов :popcorn:, так как любой из обсуждаемых языков высокого уровня кроме javascript в итоге создает именно ассемблерный код но за счет команд высокого уровня :cheer:

crazy-mike
06-29-2009, 11:41 AM
Это не совсем так :grum:, без ассемблера языки программирования потеряли бы большую часть своей функциональности
Java - вот не теряет...:grum:
JavaScript - тоже!!!!

Alex_3112
06-29-2009, 12:39 PM
Constraint Programming и Structured Programming - как бы ещё тоже принадлежат множеству "базовых принципов"?

Ну это уже совсем далеко зайти можно.
Java - Strongly Typed, Javascript - not. Отсюда возможности сделать на скорую руку код в Javascript, который "как бы работает", и ограничения в Java, которые идут во благо на больших проектах.

crazy-mike
06-29-2009, 01:27 PM
Ну это уже совсем далеко зайти можно.
Java - Strongly Typed, Javascript - not. Отсюда возможности сделать на скорую руку код в Javascript, который "как бы работает", и ограничения в Java, которые идут во благо на больших проектах.
Можно даже очень далеко зайти (намного дальше). В Java поддерживается "приведение типов". Да и поскольку существует первичный базовый тип Object - то всё , что extends Object фактически "приводится" одно к другому. Поэтому "беспорядок" в Java поддерживать даже проще чем в JavaScript. :vacation:

algoritm
07-01-2009, 09:02 AM
Можно даже очень далеко зайти (намного дальше). В Java поддерживается "приведение типов". Да и поскольку существует первичный базовый тип Object - то всё , что extends Object фактически "приводится" одно к другому. Поэтому "беспорядок" в Java поддерживать даже проще чем в JavaScript. :vacation:
Обычно это можно сделать с помощью параметров компилятора или обработки exception error :popcorn:, а в javascript наверное надо создавать специальные объекты и код :cranky:, и сразу работать с типом большей точности :popcorn:, и передавать данные как двухбайтную строку символов. :v: :cheer:

crazy-mike
07-01-2009, 09:31 AM
Обычно это можно сделать с помощью параметров компилятора
Шутка юмора в том - что все типы , которые происходят от одного и того же базового , можно приводить к базовому типу "без последствий". (Это не только в Java). :grum:

algoritm
07-01-2009, 01:30 PM
А вот например как можно сделать интерфейс работающий за счет движения курсора, это очень быстро, странно что интерфейсы такого типа ещё мало используются
<html>
<head>
<script type="text/javascript">
var a=0;
function mouseOver1()
{
a=1;
document.getElementById("t1").value="so"
}
function mouseOver2()
{
if (a==1)
{
a=0;
document.getElementById("t1").value="some words";
}
}
</script>
</head>
<body>

<textarea width="100" height="50" onmouseover="mouseOver1()"> </textarea>
<textarea width="100" height="50" onmouseover="mouseOver2()"> </textarea>
<br> <br> <br>
<center>
<textarea id="t1">so</textarea>
</center>

</body>
</html>
:cheer:

crazy-mike
07-01-2009, 01:36 PM
А вот например как можно сделать интерфейс работающий за счет движения курсора, это очень быстро, странно что интерфейсы такого типа ещё мало используются
<html>
<head>
<script type="text/javascript">
var a=0;
function mouseOver1()
{
a=1;
document.getElementById("t1").value="so"
}
function mouseOver2()
{
if (a==1)
{
a=0;
document.getElementById("t1").value="some words";
}
}
</script>
</head>
<body>

<textarea width="100" height="50" onmouseover="mouseOver1()"> </textarea>
<textarea width="100" height="50" onmouseover="mouseOver2()"> </textarea>
<br> <br> <br>
<center>
<textarea id="t1">so</textarea>
</center>

</body>
</html>
:cheer:
:vacation:
1-е: У textarea просто нет аттрибута value. Но можно было использовать element.textContent.
2-е: лучше делать onmouseover="mouseOver1(event)"
Тогда event.currentTarget = это и будет тот элемент , по которому бегает курсор. Ну и
function mouseOver1(evt) { el=evt.currentTarget; el.textContent="Hi!"; }
:grum:

algoritm
07-01-2009, 01:44 PM
:vacation:
1-е: У textarea просто нет аттрибута value. Но можно было использовать element.textContent.
2-е: лучше делать onmouseover="mouseOver1(event)"
Тогда event.currentTarget = это и будет тот элемент , по которому бегает курсор. Ну и
function mouseOver1(evt) { el=evt.currentTarget; el.textContent="Hi!"; }
:grum:
1-е: в IE8 все работает и аттрибут value у textarea есть http://www.w3schools.com/htmldom/dom_obj_textarea.asp
2-е: правильно что-то такое более общее можно придумать но мой вариант прост и понятен, а вообще да можно придумать и эффектнее
:cheer:

crazy-mike
07-01-2009, 01:49 PM
1-е: в IE8 все работает и аттрибут value у textarea есть
IE8 - ф топку!!!!!!!! :grum:
http://developer.mozilla.org
http://www.w3c.org/TR

смешно
07-01-2009, 04:57 PM
....

crazy-mike
08-13-2009, 06:59 AM
:popcorn:
element.addEventListener("click",
fucntion (evt) {
......
}
,false);
Жуть!!!!!! При этом - сам element внутри обработчика доступен по evt.currentTarget.
А дополнительные параметры сюда можно передавать через дополнительные аттрибуты.
document.createAttribute("vvv");
И теперь можно - element.setAttribute("vvv","Hello!");
:grum:
Но с addEventListener теперь JavaScript допускает "эффективную компиляцию" (хотя бы в байт-код).

crazy-mike
08-14-2009, 12:56 PM
:popcorn:
Жуткий (наверное "по-настоящему американский") вопрос - как удалить "анонимный" Event Listener из объекта? :grum:
Ответы там - ну очень "своеобразные". Официально это можно делать в новом EventListener с использованием this.argument.callee.
:grum:
Но почему-то никому не пришло в голову - что можно просто удалить объект (DOM element) из дерева , а потом вместо него создать новый без Event Listener. (специально у себя пробовал - так оно нормально работает). Если элемент исключён из дерева - то уведомления о событиях к нему и так уже не поступают. А указатель на него после выхода из функции и так попадёт в "мусор" (garbage).
:grum:

crazy-mike
08-24-2009, 03:51 PM
Кто-нибудь пробовал написать "скрипт на JavaScript" примерно в 1500 строчек?
:vacation:
Если вдруг захочется рисовать widget - то скрипт для динамического контента может быть примерно такого размера. Правда для widget это всё сжимается (архивируется) и суммарно по длинне не превышает 40-50 килобайт. Дополнительные "всплывающие окна" при этом создаются по
document.createElement("div").
Просто делается setAttribute("style","z-index :4;..."). Всплывание такого "окна" делается по document.body.appendChild(...). А "закрытие окна" по "display :none" - изменение стиля. Но отлаживать всё - ну очень неудобно. :grum:

Olezhik
08-24-2009, 04:11 PM
В 1999 году писал калькулятор для одной страховой компаний. Если я не путаю там у меня было проблизительно 20000 лини кодов. Всё было написано в [JavaScript] для одной странитцы. Работало как чясы. [Yahoo Widget] писал тоже в [JavaScript] только линий не помню сколько, думаю на много поменьше.

пс: Вот кстати одна из моих халтур
[ http://www.ecowidget.com/ ]

crazy-mike
08-24-2009, 04:22 PM
В 1999 году писал калькулятор для одной страховой компаний. Если я не путаю там у меня было проблизительно 20000 лини кодов. Всё было написано в [JavaScript] для одной странитцы. Работало как чясы. [Yahoo Widget] писал тоже в [JavaScript] только линий не помню сколько, думаю на много поменьше.

Меня больше всего удивило - что оно таким способом написанное вообще работает. И даже без "memory faults" каких-нибудь. От "нормального HTML" там вообще осталсось около десяти строчек (и те - CSS и <body /> ). Я так интерфейс для работы с БД попробовал в widget для Opera запихнуть.

Olezhik
08-24-2009, 04:33 PM
Я так своим клинетам делал кто не хотел выходить на в страницу в интернет. Чтоб что-то изменить на страницы сразу черес [wodget] менялось в базе даных очень удобно.

crazy-mike
08-24-2009, 04:40 PM
Я так своим клинетам делал кто не хотел выходить на в страницу в интернет. Чтоб что-то изменить на страницы сразу черес [wodget] менялось в базе даных очень удобно.
Ага - удобно и даже траффик довольно сильно "экономит". Да и браузером обрабатывается быстрее чем "нормальный HTML".

Olezhik
08-24-2009, 05:45 PM
Ага - удобно и даже траффик довольно сильно "экономит". Да и браузером обрабатывается быстрее чем "нормальный HTML".
Информацию можно достовать через[web services],[soap]

crazy-mike
08-25-2009, 02:19 AM
Информацию можно достовать через[web services],[soap]
Можно конечно же.
Только на стороне клиента и так в этом случае всё сводится к "разбору XML"?

Olezhik
08-25-2009, 03:29 AM
Можно конечно же.
Только на стороне клиента и так в этом случае всё сводится к "разбору ЪМЛ"?

Ну так клас, для сознадния [xml] используеш самую лутшую технологию а для чтения хмл используеш [js] как по мне так это то что надо.

crazy-mike
08-25-2009, 04:24 AM
Ну так клас, для сознадния [xml] используеш самую лутшую технологию а для чтения хмл используеш [js] как по мне так это то что надо.
Ага - при условии , что "application server" правильно сконфигурирован. :grum:
Если совсем честно - то просто плохо понимаю "преимущества SOAP" (кроме формальной "простоты управления проектом" - и то под сомнением).
А эти "widgets" просто привлекли возможностью запуска на "не-компьютерах" (set-top-box , TV set и т.д.). Но на компьютерах с ними тоже намного меньше проблем - не надо проверять "вид браузера", поскольку wgt выполняется только на Opera ( там так задан MIME TYPE в конфигурации сервера ).

algoritm
08-26-2009, 12:14 PM
Много сложностей возникает при невозможности менять параметры элемента содержащего child container. :cheer:

crazy-mike
08-26-2009, 12:19 PM
Много сложностей возникает при невозможности менять параметры элемента содержащего child container. :cheer:
Легко меняется через DOM API. :grum:
childNodes - item(i) - и можно менять всё подряд.
Кроме того есть и радикальный вариант - innerText :grum:
Только до офонарения трудно всё отлаживать - когда число строчек в скрипте перевалит за 1000. :popcorn:

algoritm
08-27-2009, 12:50 AM
Легко меняется через DOM API. :grum:
childNodes - item(i) - и можно менять всё подряд.
Кроме того есть и радикальный вариант - innerText :grum:
Только до офонарения трудно всё отлаживать - когда число строчек в скрипте перевалит за 1000. :popcorn:
Проблемы возникают при использовании 3 фреймов и смене параметров style.visibility и style.position :cheer:

crazy-mike
08-27-2009, 01:11 AM
Проблемы возникают при использовании 3 фреймов и смене параметров style.visibility и style.position :cheer:
Фреймы даром не нужны.
<div style="height :200px; overflow :scroll" >
А контент туда можно загнать черз XMLHttpRequest не особенно напрягаясь. :grum:

algoritm
08-27-2009, 02:48 AM
Фреймы даром не нужны.
<div style="height :200px; overflow :scroll" >
А контент туда можно загнать черз XMLHttpRequest не особенно напрягаясь. :grum:
Я конечно говорил о iframe, так вот не получается менять те параметры когда содержимое уже загружено (а содержимое загружается для удобства), то есть иногда получается но там создаются почему-то лишние пустоты причем и в chrome и в ie :cheer:

crazy-mike
08-27-2009, 04:19 AM
Я конечно говорил о iframe, так вот не получается менять те параметры когда содержимое уже загружено (а содержимое загружается для удобства), то есть иногда получается но там создаются почему-то лишние пустоты причем и в chrome и в ie :cheer:
Аналогично - вместо них обычные div нормально работают!!!!! :grum:

algoritm
08-28-2009, 03:20 PM
Аналогично - вместо них обычные div нормально работают!!!!! :grum:
Логично мыслишь, но все дело решилось с помощью style="display:none" и все и никаких child container :v: :cheer:

crazy-mike
08-28-2009, 03:28 PM
Логично мыслишь, но все дело решилось с помощью style="display:none" и все и никаких child container :v: :cheer:
http://forum.russianamerica.com/f/showthread.php?t=56149
:popcorn:
А теперь представь - как будут выглядеть виджеты при использовании для доступа в интернет технологии BGM (Broadband over Gas Mask)
:grum:
Нюанс - вместо множества запросов http get делается всего один такой запрос - который тупо читает один файл zip-архива. После этого весь статический контент и "логика приложения" берётся из этого архива. А "динамика" выполняется через AJAX-запросы к различным источникам.

algoritm
08-28-2009, 03:42 PM
Логично мыслишь, но все дело решилось с помощью style="display:none" и все и никаких child container :v: :cheer:
Да кстати сказаное не имеет отношения к задаче про site1 и site2, а вопрос про site1 и site2 так и остается открытым :cheer:

crazy-mike
08-28-2009, 03:47 PM
Да кстати сказаное не имеет отношения к задаче про site1 и site2, а вопрос про site1 и site2 так и остается открытым :cheer:
Вообще пропадает. Из Opera widgets можно лезть через AJAX-запросы на любой сайт на любой машине. :grum:

crazy-mike
09-14-2009, 06:05 AM
:popcorn:
Ну и конечно же в JavaScript "рулит" возможность добавления любого своего собственного свойства в экземпляр объекта.
Практическое применение:
a=new XMLHttpRequest();
.....
a.yoprst=document.getElementById("wow");
Весь кайф в том - что процедуре обработки завершения запроса это свойство тоже доступно без всяких лишних деклараций.
Это можно делать даже так:
a=new XMLHttpRequest();
....
a.yoprst=....
a.onreadystatechange = function () {
handleIt(a);
};

И функция handleIt(p) сможет получить переданные параметры через p.yoprst!!!!!!!! Java в этом случае просто "отдыхает". Правда и такие глюки могут в "скрипте" появляться - которых даже в "программах" на Perl не найти!!!!!!

crazy-mike
12-26-2009, 01:52 PM
Идиотский способ удаления принудительной рекламы провайдера из веб-странички.
Это JavaScript - а не PHP


<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE html>
<html>
<head>
<title>Smart Home</title>
<style type="text/css" media="all" >
bold { font-weight :normal; }
body { background-color :#ffff00; }
</style>
<script type="text/javascript">
window.addEventListener("load",
function (ev) {
document.write("ПрЮветик!");
alert("data ready!");
}
,false);
</script>
</head>
<body>
</body>
</html>

"Странный провайдер хостинга" (кстати во всех остальных отношениях может даже и очень хорошего - лучшего в Украине) решил вставлять принудительно на странички свою рекламу через http-filter (apache2 http-сервер). Результатом работы фильтра там является вставка <script type="text/javascript" src="..."></script>.
Для "нормальных" (традиционных) страничек это даже как бы работает.
Но страничку ведь можно делать с некоторой долей максимального идиотизма. А именно - сформировать контент на JavaScript внутри el=document.createElement("div") . А потом всё вывалить по document.write(el.innerHTML);
:wink1: И никакая реклама светиться в упор не будет. :grum:
В IE вместо addEventListener - attachEvent.


<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE html>
<html>
<head>
<title>Smart Home</title>
<style type="text/css" media="all" >
bold { font-weight :normal; }
body { background-color :#ffff00; }
</style>
<script type="text/javascript">
window.attachEvent("onload",
function () {
document.write("ПрЮветик!");
alert("data ready!");
}
,false);
</script>
</head>
<body>
</body>
</html>

knazigor
12-26-2009, 02:04 PM
иногда мне кажецца што жабаскрипт придумали какие-то элиены из литающих тарелок

его придумали лисперы. освободите свой мозг от императивного и ооп говна, на дворе 21 век, пора пользоваться языками функциональными!

crazy-mike
12-26-2009, 02:18 PM
его придумали лисперы. освободите свой мозг от императивного и ооп говна, на дворе 21 век, пора пользоваться языками функциональными!
В функциональных языках есть потенциальный глюк - который сводится к неоднозначности в порядке вычисления аргументов при вызове функции.
:grum:
Одной этой "детали" хватает - чтобы "крышу снесло".
У JavaScript есть одна интересная особенность - пока он ещё не является многопотоковым. :grum:

knazigor
12-26-2009, 02:57 PM
В функциональных языках есть потенциальный глюк - который сводится к неоднозначности в порядке вычисления аргументов при вызове функции.
:grum:
Одной этой "детали" хватает - чтобы "крышу снесло".
У JavaScript есть одна интересная особенность - пока он ещё не является многопотоковым. :grum:

майк, это фишка а не неоднозначности. За счет этой фишки можно быстро и эффективно писать код. ДжаваСкрипт, да, он слабоват в некоторых аспектах, но это сделано умышленно, чтобы люди слабые головой смогли на нем писать. На камон лиспе, схеме, хаскеле, эрланге или скале много человек сможет писать?

crazy-mike
12-26-2009, 03:03 PM
майк, это фишка
Я на этой "фишке" когда-то в лабораторной работе по компиляторам напоролся жестоко. Там трансляцию арифметических выражений надо было написать. Я написал - и оно у меня работало. Но аргументы при вызове функций у меня в обратном порядке вычислялись. Самое прикольное - что похожая хреновина была в каком-то из ранних компиляторов Turbo Pascal. Я это потом в Borland Express вычитал. :grum:

crazy-mike
12-26-2009, 03:05 PM
На камон лиспе, схеме, хаскеле, эрланге или скале много человек сможет писать?
На Common LISP где-то на третьем курсе. Я на SNOBOL4 написал работающую программу через 15 минут после того как его в первый раз увидел.

knazigor
12-26-2009, 03:23 PM
На Common LISP где-то на третьем курсе. Я на SNOBOL4 написал работающую программу через 15 минут после того как его в первый раз увидел.

Ты избранный, раз легко сумел, заставька бангалорского индуса че-нить написать на нем. Кстати, фишка лиспа в том что там нет синтаксиса как такового, там тока мозг нужен.

Lor
12-26-2009, 03:27 PM
... А потом всё вывалить по document.write(el.innerHTML);
:wink1: И никакая реклама светиться в упор не будет. :grum:
Не забывай про SEO. Все бы было хорошо, если бы при индексации Гугли выполняли скрипты. :)

crazy-mike
12-26-2009, 03:44 PM
Не забывай про SEO. Все бы было хорошо, если бы при индексации Гугли выполняли скрипты. :)
Для индексации можно и в head напихать. Или тупо завести страницы только для индексации - но никогда их интерактивно не показывать.
Кстати - <body style="display :none" > даже прикольно. И пусть попробуют вставить рекламу.
Но я сделал это самым варварским способом внутри функции на onload.

knazigor
12-26-2009, 04:13 PM
Для индексации можно и в head напихать. Или тупо завести страницы только для индексации - но никогда их интерактивно не показывать.
Кстати - <body style="display :none" > даже прикольно. И пусть попробуют вставить рекламу.
Но я сделал это самым варварским способом внутри функции на onload.

Блин, я системный программист, по ходу я не в теме, раз тут про веб разговор.

Alex_3112
12-26-2009, 08:22 PM
Для индексации можно и в head напихать.
Гугль - он умный. Если что-то фигурирует только в head, или спрятано (display:none или по-другому), он воспринимает это как попытку себя обмануть, и обижается.

crazy-mike
12-27-2009, 01:33 AM
Гугль - он умный. Если что-то фигурирует только в head, или спрятано (display:none или по-другому), он воспринимает это как попытку себя обмануть, и обижается.
теги meta с description он пока ещё нормально воспринимает. Здесь весь прикол в том, что структура документа для поисковиков и структура документа для просмотра могут вообще не совпадать. JavaScript позволяет сделать такую пакость по document.write. Просто "ошибка" с идеей вставки рекламы заключалась именно в том, что они это сделали внутри body. Правда эта их "фишка" существует только на бесплатном хостинге. :grum:

Alex_3112
12-27-2009, 12:02 PM
теги meta с description он пока ещё нормально воспринимает
Но если description/keywords не подкреплены текстом на странице, результат ниже.

crazy-mike
12-27-2009, 12:09 PM
Но если description/keywords не подкреплены текстом на странице, результат ниже.
В общем случае можно "подкреплённые текстом" страницы понасоздавать - даже из одного текста специально для поисковиков. Но показывать их "нормальному юзеру" совсем не обязательно. :grum:
Тот "шютк" с document.write именно для этого и нужен.

crazy-mike
01-07-2010, 02:35 AM
Самое прикольное, что "полностью на Javascript страничка" грузится быстрее. Можно даже окна делать через теги div с z-index. :grum:

crazy-mike
01-09-2010, 05:13 AM
Так - просто "набросок". div вместо popup windows.


var Sh = {
xWindow :function (zicon,ztitle) {
win=document.createElement("div");
tt=document.createElement("div");
tt.setAttribute("style",
"display :table; width :100%; height :1em; background-color :#0000c2; "+
"color :#ffffff; font-weight :bold; text-align :right"
);
ico=document.createElement("img");
ico.style.width="1em"; ico.style.height="1em";
ico.src=zicon;
dc1=document.createElement("div");
dc1.setAttribute("style","display :table-cell; text-align :left");
dc1.appendChild(ico);
dc2=document.createElement("div");
dc2.setAttribute("style","display :table-cell; text-align :center");
dc2.appendChild(document.createTextNode(ztitle));
dc3=document.createElement("div");
dc3.setAttribute("style","display :table-cell; width :1em");
xclose=document.createElement("img");
xclose.src="./im/close.gif";
xclose.style.width="1em"; xclose.style.height="1em";
xclose.style.border="1px solid";
xclose.title="ъБЛТЩФШ";
xclose.style.cursor="pointer";
xclose.addEventListener("click",
function(ev) {
ev.stopPropagation();
c=ev.currentTarget;
w=c.parentNode.parentNode.parentNode; m=w.parentNode;
m.removeChild(w);
},
false
);
dc3.appendChild(xclose);
tt.appendChild(dc1);
tt.appendChild(dc2);
tt.appendChild(dc3);
win.appendChild(tt);
return win;
},
.....
}

Ну - примерно как "наши окошки лучше ваших"! Тег div.
"Типа окно" создаётся по w=Sh.xWindow("icon","title");
Для того чтобы его "показать" - w.setAttribute("style","z-index :....; position : ...; ....");
Вообще-то главное - z-index. Кроме того "рабочий стол" желательно забить какой-то "фоновой хреовиной" - иначе "это" нигде кроме Мазиллы не будет правильно "перерисовываться".

crazy-mike
01-09-2010, 05:24 AM
<?xml version='1.0' encoding='koi8-u'?>
<!DOCTYPE html>
<html>
<head>
<title>Наши окошки лучше ваших!<title>
<style type="text/css" media="all" >
#desktop { width :1024px; height :768px; display :block;
background-color :#5f7dde; }
</style>
<script type="text/javascript" src="init.js" ></script>
</head>
<body>
<div id="desktop" >
</div>
</body>
</html>

:grum::grum::grum:

марик - камарик
01-09-2010, 06:19 AM
Мне тоже так кажется.

var aliens = {
nomoney: true,
spaceship: function () {
},
laserCannon: function() {
},
Obama :function() {
}
};

:grum:
Описания функций через запятую!!!! Только aliens могли такое учудить!

А помоему, круто1 Так и должно быть! Жабаскрипт - будуюсее программирования

собственно, почему нет?

crazy-mike
01-09-2010, 06:30 AM
А помоему, круто1 Так и должно быть! Жабаскрипт - будуюсее программирования

собственно, почему нет?
Мне оно тоже в последнее время очень сильно нравится. Специально целый вебсайт переделал - там теперь всё через JavaScript + AJAX (фактически существует всего одна (на самом деле две - одна специально для Internet Explorer)) HTML-страница и очень много "модулей на JavaScript. А вместо "окошек" - теги div с разными значениями z-index.
Самое прикольное - что так (через "dynamic JavaScript") можно полностью имитировать почти любой GUI. Основная неприятность - несовместимость моделей обработчиков событий в Internet Explorer в всех остальных браузерах (Mozilla Compatible). Но даже это "преодолимо" (просто код выносится отдельно).
Даже вот таким довольно тупым способом (но всё равно работает):


<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE html>
<html>
<head>
<title>Microsoft Must Die!</title>
<script type="text/javascript" >
if(window.addEventListener) window.location="mozilla.html";
else window.location="ie.html";
</script>
</head>
<body>
</body>
</html>

algoritm
02-16-2010, 01:26 PM
А вот например как можно сделать интерфейс работающий за счет движения курсора, это очень быстро, странно что интерфейсы такого типа ещё мало используются
<html>
<head>
<script type="text/javascript">
var a=0;
function mouseOver1()
{
a=1;
document.getElementById("t1").value="so"
}
function mouseOver2()
{
if (a==1)
{
a=0;
document.getElementById("t1").value="some words";
}
}
</script>
</head>
<body>

<textarea width="100" height="50" onmouseover="mouseOver1()"> </textarea>
<textarea width="100" height="50" onmouseover="mouseOver2()"> </textarea>
<br> <br> <br>
<center>
<textarea id="t1">so</textarea>
</center>

</body>
</html>
:cheer:
сейчас кстати этот пример почему то не работает в chrome 4 а в FF3 и IE8 работает,
вот форма для простого тестинга
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic
:grum: :cheer:

Olezhik
02-16-2010, 01:35 PM
сейчас кстати этот пример почему то не работает в chrome 4 а в FF3 и IE8 работает,
вот форма для простого тестинга
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic
:grum: :cheer:

пора уже на [JQuery] переходить :)

crazy-mike
02-16-2010, 01:43 PM
сейчас кстати этот пример почему то не работает в chrome 4 а в FF3 и IE8 работает,
вот форма для простого тестинга
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic
:grum: :cheer:
:wink1::wink1::wink1::wink1::wink1::wink1::wink1:: wink1::wink1::wink1::wink1::wink1::wink1::wink1::w ink1::wink1::wink1::wink1:
и не должен работать.
function mOver(ev) { ev.stopPropagation();
.....
}
:wink1::wink1::wink1::wink1:
как минимум.
Ну и вместо a.value="...." надо бы a.textContent="....";

algoritm
02-17-2010, 12:10 PM
пора уже на [JQuery] переходить :)


:wink1::wink1::wink1::wink1::wink1::wink1::wink1:: wink1::wink1::wink1::wink1::wink1::wink1::wink1::w ink1::wink1::wink1::wink1:
и не должен работать.
function mOver(ev) { ev.stopPropagation();
.....
}
:wink1::wink1::wink1::wink1:
как минимум.
Ну и вместо a.value="...." надо бы a.textContent="....";
это стандарт обычного html5 так что наверное это все же по другим причинам :cheer:

Olezhik
02-17-2010, 12:38 PM
это стандарт обычного хтмл5 так что наверное это все же по другим причинам :чеер:

[JQuery] это не причина, это меньше головной боли :34:

http://api.jquery.com/mouseover/

в самом низу странитсу пример, открой эту странитсу в любом браузаре будет работать.

algoritm
03-20-2010, 03:24 PM
сейчас кстати этот пример почему то не работает в chrome 4 а в FF3 и IE8 работает,
вот форма для простого тестинга
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic
:grum: :cheer:
а сейчас после обновления chrome 4 работает :cheer:

algoritm
03-30-2010, 06:37 AM
А вот например как можно сделать интерфейс работающий за счет движения курсора, это очень быстро, странно что интерфейсы такого типа ещё мало используются
<html>
<head>
<script type="text/javascript">
var a=0;
function mouseOver1()
{
a=1;
document.getElementById("t1").value="so"
}
function mouseOver2()
{
if (a==1)
{
a=0;
document.getElementById("t1").value="some words";
}
}
</script>
</head>
<body>

<textarea width="100" height="50" onmouseover="mouseOver1()"> </textarea>
<textarea width="100" height="50" onmouseover="mouseOver2()"> </textarea>
<br> <br> <br>
<center>
<textarea id="t1">so</textarea>
</center>

</body>
</html>
:cheer:
да и забыл заменить width и height у textarea на cols и rows, так что правильно так

<html>
<head>
<script type="text/javascript">
var a=0;
function mouseOver1()
{
a=1;
document.getElementById("t1").value="so"
}
function mouseOver2()
{
if (a==1)
{
a=0;
document.getElementById("t1").value="some words";
}
}
</script>
</head>
<body>

<textarea cols="25" rows="2" onmouseover="mouseOver1()"> </textarea>
<textarea cols="25" rows="2" onmouseover="mouseOver2()"> </textarea>
<br> <br> <br>
<center>
<textarea id="t1">so</textarea>
</center>

</body>
</html>
:cheer:

crazy-mike
03-30-2010, 06:55 AM
да и забыл заменить width и height у textarea на cols и rows, так что правильно так

:cheer:
А теперь на mxml + ActionScript всё это перепиши. :grum:

Olezhik
03-30-2010, 09:40 AM
да и забыл заменить width и height у textarea на cols и rows, так что правильно так

:cheer:

система нипиль. :34:

algoritm
03-30-2010, 11:24 AM
А теперь на mxml + ActionScript всё это перепиши. :grum:
кстати flash не использует аппаратное ускорение, то есть использует только скелинг то есть зуминг то есть масштабирование :lol: :cheer:

crazy-mike
03-30-2010, 12:33 PM
кстати flash не использует аппаратное ускорение, то есть использует только скелинг то есть зуминг то есть масштабирование :lol: :cheer:
Знаешь - вот смотрю я на этот Adobe Flex , даже пару тестов написал и проверил (на работу с потоковым видео и звуком). Но какое-то оно у них всё "длинное и неудобное". С кириллицей всё хорошо - пока всё внутри mxml-файла. Как только всё в *.as - сразу начинается трабл. Для сравнения - в haxe достаточно всё просто тупо в кодировке UTF-8 делать (правда haxe вообще никакой другой принципиально не понимает :grum:).
Но "на выходе" всё равно будет swf (в случае haxe. Хотя там есть и несколько других вариантов).

crazy-mike
06-19-2011, 03:27 AM
Здравствуй . шиза! :rofl:
https://developer.mozilla.org/en/JavaScript/Reference/Statements/var



var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
Parameters

varnameN Variable name. It can be any legal identifier. valueN Initial value of the variable. It can be any legal expression.
Description

The scope of a variable is the current function or, for variables declared outside a function, the current application.
Using var outside a function is optional; assigning a value to an undeclared variable implicitly declares it as a global variable. However, it is recommended to always use var, and it is necessary within functions in the following situations:



https://developer.mozilla.org/en/JavaScript/Guide/Values%2c_Variables%2c_and_Literals


Another unusual thing about variables in JavaScript is that you can refer to a variable declared later, without getting an exception. This concept is known as hoisting; variables in JavaScript are in a sense "hoisted" or lifted to the top of the function or statement. However, variables that aren't initialized yet will return a value of undefined.

crazy-mike
07-06-2011, 04:53 AM
Здравствуй , шиза!
Здесь уже многозадачность появилась! (multi-threading)
https://developer.mozilla.org/en/Using_web_workers

Workers of all the scripts , unite! :rofl:

crazy-mike
07-08-2011, 02:40 AM
система нипиль. :34:
:rofl:


<title>ffffffffffff</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script>
var f=new Worker("w.js");
var cnt=0;

function getMsg(ev) {
var d;
d=document.createElement("div");
d.textContent=ev.data;
document.body.appendChild(d);
cnt++;
if(cnt==10) f.terminate();
f.postMessage("run");
}

function myRun(ev) {
f.addEventListener("message",getMsg,false);
f.postMessage("run");
}

window.addEventListener("load",myRun,false);
</script>
</head>
<body>
</body>
<html>

И w.js:


var n=0;

function myEv(ev) {
var z=ev.data;
switch(z) {
case "run": n++;
self.postMessage(n); break;
default: break;
};
}

self.addEventListener("message",myEv,false);

Так даже асинхронные терминалы можно рисовать внутри "веб-странички".

crazy-mike
07-09-2011, 04:27 PM
Код w.js ведь можно даже так переписать:


var n=0,j=0;
var bb=[
"#ff0000","#00ff00","#0000ff"
];

function myEv(ev) {
var z=ev.data;
var v,q;
switch(z) {
case "run": n++;
v="<b style=\"background-color :"+bb[j]+"\" >"+n+"</b>";
j++; if(j==bb.length) j=0;
self.postMessage(v); break;
default: break;
};
}

self.addEventListener("message",myEv,false);



В смысле того - что внутри Worker-а нельзя использовать напрямую функции document.createElement() и т.п. Никакого DOM , только XMLHttpRequest, JSON и объекты JavaScript.
Ну а страничка , использующая эту "радость" может выглядеть так:


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html>
<head>
<title>my ott tv video</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script>
var f=new Worker("w.js");
var cnt=0;

function getMsg(ev) {
var d;
d=document.createElement("div");
d.innerHTML=ev.data;
document.body.appendChild(d);
cnt++;
if(cnt==10) f.terminate();
f.postMessage("run");
}

function myRun(ev) {
f.addEventListener("message",getMsg,false);
f.postMessage("run");
}

window.addEventListener("load",myRun,false);
</script>
</head>
<body>
</body>
<html>


Т.е. это ограничение на использование DOM внутри Worker не является таким уж страшным.