Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Виджет "Диалог"! (https://javascript.ru/forum/project/14097-vidzhet-dialog.html)

Maxman 29.12.2010 13:28

Виджет "Диалог"!
 
Доброго времени суток!) Недавно написал свой скрипт диалоговых окон, на основе своего собственного фреймворка (который писал в целях закрепелия знаний) Хочу продемонстрировать: http://syntax-js.net.ru/dialog/demo.html
Документация по настройке будет позже, но код самого плагина простой - кому надо и так поймёт =)

P.S если кто-то захочет поюзать, буду тока рад) Архив с исходниками тут.

Vulkan 29.12.2010 16:16

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

Maxman 29.12.2010 16:46

Там впринципе можно указать чтобы не вытаскивалось за пределы, но так не круто как-то... Vulkan, а как вы эт представляете, типо сделать доп. кнопку чтобы по центру становилось?

Vulkan 29.12.2010 17:17

Ну зачем же, просто если случайно вынести заголовок окна за границы его достать уже невозможно. Лучше сделать границы, чтобы не переносилось за пределы, но это только моё мнение =).

Maxman 29.12.2010 17:39

Это можно бует прописать в опциях) Я ещё решение придумал: забацал ему в прототип метод center(), чтоб веб-дизайнер мог его на любую кнопку или объект на сайте повесить, тока тогда нужно без затемнения вызывать. Демо обновил.

Vulkan 29.12.2010 17:45

Maxman, да, отлично)

mycoding 30.12.2010 14:29

Молодец, только написание своего framework-а даёт реальные знания в
javascript.
Я делал чуток http://js-coding.narod.ru/
Но мне бы хотелось подойти к написанию framework-а со стороны ООП.

Maxman 30.12.2010 18:54

У меня ООП используется, он на нём и построен)

igrok 05.01.2011 09:31

хороший диалог, респект:)
сам собираюсь свой делать, вот теперь есть наглядный пример ;)

B~Vladi 05.01.2011 13:12

Цитата:

Сообщение от Maxman
на основе своего собственного фреймворка

Посмотрел я код твоего фреймворка. Неужели ни у кого нет своих идей? Почему все делают jQuery?!

Maxman 05.01.2011 13:36

B~Vladi, да почему jQuery то? То-что синтаксис - цепочки вызовов, это в каждом фреймворке, а ядро у меня вообще по другому устроенно, и алгоритм добавления методов свой.

B~Vladi 05.01.2011 15:04

Цитата:

Сообщение от Maxman
о-что синтаксис - цепочки вызовов, это в каждом фреймворке, а ядро у меня вообще по другому устроенно, и алгоритм добавления методов свой.

Я про это и говорю. Важно то, что видно снаружи, а не как там что устроено. Такое ощущение, что цепочки вызовов это единственный простой и удобный вариант.
Я уже давно разрабатываю свой фреймворк. Там от ядра видно только 5-6 методов, из которых только 2 будут часто использоваться программистом, а не 50, как в каждом фреймворке.
В любом случае цепочки вызовов тоже имеют право на жизнь, просто хотел увидеть что-нибудь новое :)

monolithed 05.01.2011 19:27

Maxman думаю стоит сбрасывать результат после закрытия окна. т.е. после повторного вызова окна сохраняется результат первого вызова...

Цитата:

Сообщение от B~Vladi
Такое ощущение, что цепочки вызовов это единственный простой и удобный вариант.

Лично для меня, та нотация в которая используется в jQuery cчитается эталонной, я даже MooTools под это подогнал (если проект большой, иначе нет смысла).

Цитата:

Сообщение от B~Vladi
В любом случае цепочки вызовов тоже имеют право на жизнь, просто хотел увидеть что-нибудь новое

А показать альтернативный пример можете?

monolithed 05.01.2011 20:15

Maxman я сильно не стал вникать в код, но что сразу бросилось в глаза так это спецсимволы: ¬, °, ¤, §, ~, ^ зачем они, и какие задачи у функции combinator?

B~Vladi 05.01.2011 20:58

Цитата:

Сообщение от monolithed
А показать альтернативный пример можете?

Могу, но не сейчас. Если очень интересно - напиши в скайп.
Цитата:

Сообщение от monolithed
сразу бросилось в глаза так это спецсимволы

Аха, тоже заметил. Думаю защита от дураков - набрать на клавиатуре их нельзя.
Цитата:

Сообщение от monolithed
а нотация в которая используется в jQuery cчитается эталонной

Во во. У вас не висят дома портреты Резига?!

monolithed 05.01.2011 21:27

Цитата:

Сообщение от B~Vladi
Могу, но не сейчас. Если очень интересно - напиши в скайп.

Да не к спеху, как время будет выложи здесь, интересно же обсудить))
Цитата:

Сообщение от B~Vladi
Во во. У вас не висят дома портреты Резига?!

Нет, мне просто подход реализации нравится (но книжки я его прочел :D)

B~Vladi 05.01.2011 22:08

Цитата:

Сообщение от monolithed
как время будет выложи здесь, интересно же обсудить

Обязательно. Начало всего этого можешь почитать тут (если терпения хватит).

Maxman 05.01.2011 22:20

Цитата:

Сообщение от monolithed (Сообщение 86409)
Maxman я сильно не стал вникать в код, но что сразу бросилось в глаза так это спецсимволы: ¬, °, ¤, §, ~, ^ зачем они, и какие задачи у функции combinator?

Эта функция входит в состав движка селекторов (выборки иными словами), спецсимволы - да, в каком-то смысле защита :)
P.S Я кстати тож фанат Резига :dance:

B~Vladi 05.01.2011 22:23

Цитата:

Сообщение от Maxman
Я кстати тож фанат Резига

:-E

Maxman 05.01.2011 22:23

Цитата:

Сообщение от monolithed
после повторного вызова окна сохраняется результат первого вызова...

В винде так-же)

monolithed 06.01.2011 00:43

Цитата:

Сообщение от Maxman
В винде так-же)

Помоему тут смысл немного иной.

Цитата:

Сообщение от Maxman
Эта функция входит в состав движка селекторов (выборки иными словами), спецсимволы - да, в каком-то смысле защита

А можно по подробней, а то мне даже интересно стало :)

По коду,я заметил несколько нюансов:
1. относительно циклов

2. относительно indexOf(). Также советую обратить внимание на метод search().

3. относительно outerHTML. По моему __defineGetter__ очень тормознутый, если есть желание можете проверить, к томуже он если мне не изменяет память работает в FF3+ (хотя кто сейчас FF2 пользуется). Плюс есть одно НО: XMLSerializer() в некоторых реализациях, когда тип документа Strict заместо <span></span> возвращает <span />...!


Но все-таки как вариант альтернативной реализации:

<p id="p">
    <span>|</span>
</p>
<script type="text/javascript">
function outerHTML(node){
    return node.outerHTML || (
        function(i){
          var wrap = document.createElement('div'), context;
          wrap.appendChild(i.cloneNode(true));
          context = wrap.innerHTML;
          wrap = null;
          return context;
      })(node);
}

alert(outerHTML(document.getElementById('p')));
</script>


Смотрим в FF (где-то в лучшем случае добавляется атрибут пространства имен xmlns, а где-то (до FF 3.5 элемент приводится к XML нотации))
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head><head>
<body>
    <p id="p"></p>
    <script type="text/javascript">
    (function(node){
        return alert(node.outerHTML || new XMLSerializer().serializeToString(node));
    }(document.getElementById('p')));
    </script>
</body>


4. try/catch по мне так лишнии, точнее их желательно условиями заменить, т.к. они вроде бы прожорливы.

5. обратите внимание на метод getElementsByClassName().

6. в фунции combinator if-ы лучше заменить на switch, т.к. он быстрей будет

Maxman 06.01.2011 10:57

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

Maxman 09.01.2011 18:46

Ещё написал плагин Resize: http://syntax-js.net.ru/resize.htm
Хотел добавить к окну. Надеюсь кто-нить посморит, вдруг баги какие обнаружатся... )

Vulkan 09.01.2011 19:10

Maxman, отличный плагин, только вот одно но, немного трудновато подхватить область чтобы ресайзить див.

Maxman 09.01.2011 20:09

Цитата:

Сообщение от Vulkan (Сообщение 87091)
немного трудновато подхватить область чтобы ресайзить див.

По умолчанию стоит 2 пикселя, толщину можно настроить:
S("selector").resizable({ thick: 5 }); // будет 5 пикселей

Ну документации конечно пока нет... на днях напишу, залью на сайт свой.

B~Vladi 10.01.2011 11:38

Maxman, если надо, для сайта - есть хост

Maxman 10.01.2011 13:38

B~Vladi, мне бы он не помешал... а то на ucoz'е приходится хоститься. Если вы считаете проект интересным, буду оч рад переехать туда :) Где эт можно обсудить?

B~Vladi 10.01.2011 14:08

В скайпе. В профиле указан.

Maxman 23.01.2011 12:52

Добавил ресайз, появились баги и поддержка ИЕ пропала( Щас обновил. Эх... буду дорабатывать :)

Александр х@к 23.10.2011 21:34

дайте исходник, плиз


Часовой пояс GMT +3, время: 01:06.