Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сокротить код (https://javascript.ru/forum/misc/25701-sokrotit-kod.html)

bugmenot 13.02.2012 05:18

Сокротить код
 
<!DOCTYPE html>
<html dir="ltr">
    <head>
        <meta charset="utf-8" />
        <style type="text/css">
            body { font: 14px Tahoma; }                     
        </style>
        <link rel="stylesheet" type="text/css" href="wysiwyg.css" />
        <script type="text/javascript">
            function WYSIWYG(conf) {
                this.mode = "rich";
                this.textarea = document.createElement("textarea");
                this.textarea.name = conf["target"];
                this.url = (conf["url"] === undefined) ? "." : conf["url"];
            }
                                  
            WYSIWYG.prototype.execute = function(command, value) { 
                this.iframeWindow.focus();
                this.iframeWindow.document.execCommand(command, null, value);
            }
            
            WYSIWYG.prototype.setBold = function() {
                this.execute("bold", "");
            }    
            
            WYSIWYG.prototype.setItalic = function() {
                this.execute("italic", "");
            } 
            
            WYSIWYG.prototype.setUnderline = function() {
                this.execute("underline", "");
            } 
            
            WYSIWYG.prototype.setStrike = function() {
                this.execute("strikeThrough", "");
            }
            
            WYSIWYG.prototype.update = function() {             
                var self = this;
                var interval = setInterval(
                    function() {
                        self.textarea.value = self.iframeDocument.body.innerHTML;
                        if (self.mode == "plain") {
                            clearInterval(interval);
                        }
                    },
                    40
                );
            }
            
            WYSIWYG.prototype.replace = function() {                        
                var self = this;                          
                
                // [*вырезано*]
                
                /* кнопки */
                // Bold
                var button = document.createElement("div");
                button.className = "button";
                button.innerHTML = '<span style="font-weight: bold;">B</span>';
                button.title = "Bold";
                button.onclick = function() {
                    self.setBold();
                }
                iframeBar.appendChild(button); 
                // Italic
                button = document.createElement("div");
                button.className = "button";
                button.innerHTML = '<span style="font-style: italic;">I</span>';
                button.title = "Italic";
                button.onclick = function() {
                    self.setItalic();
                }
                iframeBar.appendChild(button); 
                // Underline
                button = document.createElement("div");
                button.className = "button";
                button.innerHTML = '<span style="text-decoration: underline;">U</span>';
                button.title = "Underline";
                button.onclick = function() {
                    self.setUnderline();
                }
                iframeBar.appendChild(button);
                // Striked
                button = document.createElement("div");
                button.className = "button";
                button.innerHTML = '<span style="text-decoration: line-through;">S</span>';
                button.title = "Strike";
                button.onclick = function() {
                    self.setStrike();
                }
                iframeBar.appendChild(button);
                
                // [*вырезано*]
            }          
        </script>        
    </head>
    <body>
        
        <form action="#" method="post">
            <textarea name="content" cols="48" rows="4"></textarea>
        </form>
        
        <script type="text/javascript">
            wysiwyg = new WYSIWYG({"target" : "content"});
            wysiwyg.replace();
        </script>
    </body>
</html>


Меня не устраивают повторяющиеся фрагменты кода, пробовал в массив загонять, но там eval'ом приходиться выполнять, а ещё баг получается что у всех элементов при onclick один и тот же последний метод. Довольно тупой язык...

Riim 13.02.2012 05:36

Цитата:

Сообщение от bugmenot
Довольно тупой язык...

может дело в тебе?

Mахmахmахimus 13.02.2012 06:41

блин этот чувак скрипты в шапку подключает, расходимся пасоны...

FINoM 13.02.2012 07:48

Цитата:

Сообщение от Mахmахmахimus
блин этот чувак скрипты в шапку подключает, расходимся пасоны...

Для отладки можно.
Цитата:

Сообщение от bugmenot
Довольно тупой язык...

Просто не нужно немножко по-дебильному кодить.
Думаете после этого вам ответят?

monolithed 13.02.2012 11:36

Цитата:

Сообщение от bugmenot
Довольно тупой язык...

Правила организации кода везде одинаковые.

Gozar 13.02.2012 12:10

Цитата:

Сообщение от bugmenot (Сообщение 157080)
Меня не устраивают повторяющиеся фрагменты кода

Чувааак, для этого придумали аргументы в функции передавать!

Цитата:

Сообщение от bugmenot (Сообщение 157080)
а ещё баг получается что у всех элементов при onclick один и тот же последний метод.

А ещё придумали замыкания, чтобы метод последний не был один и тот же у всех onclick. Я уж молчу про addEventListener, хотя тебе наверное уже пора узнать что это такое. Хотя у тебя проблема что ты не в курсе что функции умеют принимать аргументы.

Цитата:

Сообщение от bugmenot (Сообщение 157080)
Довольно тупой язык...

Он таким и будет, пока ты его не изучишь.

bugmenot 13.02.2012 12:46

Ок, почему не работает так?

// Bold
                var button = document.createElement("div");
                button.className = "button";
                button.innerHTML = '<span style="font-weight: bold;">B</span>';
                button.title = "Bold";
                // button.onclick = function() {
                //     self.setBold();
                // }
                button.onclick = this.setBold;
                iframeBar.appendChild(button);


Цитата:

Event thread: click
Uncaught exception: TypeError: 'this.execute' is not a function
Error thrown at line 15, column 16 in <anonymous function: WYSIWYG.prototype.setBold>() in http://localhost/html/editor/blank.htm:
this.execute("bold", "");

bugmenot 13.02.2012 13:02

var buttons = [
                    {
                        "label" : '<span style="font-weight: bold;">B</span>',
                        "title" : "Bold",
                        "method" : "setBold"
                    },
                    
                    {
                        "label" : '<span style="text-decoration: underline;">U</span>',
                        "title" : "Underline",
                        "method" : "setUnderline"
                    }
                    
                ];
                
                for (var i = 0; i < buttons.length; ++i) {
                    var button = document.createElement("div"); 
                    button.className = "button";
                    button.innerHTML = buttons[i]["label"];
                    button.title =  buttons[i]["title"];
                    var method = buttons[i]["method"];
                    button.onclick = function() {
                        var code = "self." + method + "();";
                        alert(code);
                        eval(code);
                    }
                    iframeBar.appendChild(button);                
                }


А так какую бы "кнопку" не нажал выскакивает "self.setUnderline();"

bugmenot 13.02.2012 13:05


Gozar 13.02.2012 13:29

Цитата:

Сообщение от bugmenot (Сообщение 157137)
Ок, почему не работает так?
...
Event thread: click
Uncaught exception: TypeError: 'this.execute' is not a function ...

Я что-то не пойму, ты меня что переводчиком хочешь нанять или учителем для себя?

http://phpclub.ru/faq/WhyForum

bugmenot 13.02.2012 13:33

Цитата:

Сообщение от Gozar (Сообщение 157142)
Я что-то не пойму, ты меня что переводчиком хочешь нанять или учителем для себя?

http://phpclub.ru/faq/WhyForum

ты или идиот или просто жырный, но про замыкания что подсказал спасибо... в гавноедском языке всё не так

for (var i = 0; i < buttons.length; ++i) {
                    var button = document.createElement("div"); 
                    button.className = "button";
                    button.innerHTML = buttons[i]["label"];
                    button.title =  buttons[i]["title"];
                    (function(i) {
                        button.onclick =  function() {
                            eval("self." + buttons[i]["method"] + "();");
                        }                
                    })(i);
                    iframeBar.appendChild(button);                
                }


то что нужно городить такой огород доказывает уёбышность данного языка

DreamTheater 13.02.2012 13:58

Цитата:

Сообщение от bugmenot (Сообщение 157143)
ты или идиот или просто жырный, но про замыкания что подсказал спасибо... в гавноедском языке всё не так

for (var i = 0; i < buttons.length; ++i) {
                    var button = document.createElement("div"); 
                    button.className = "button";
                    button.innerHTML = buttons[i]["label"];
                    button.title =  buttons[i]["title"];
                    (function(i) {
                        button.onclick =  function() {
                            eval("self." + buttons[i]["method"] + "();");
                        }                
                    })(i);
                    iframeBar.appendChild(button);                
                }


то что нужно городить такой огород доказывает уёбышность данного языка

Это лишь доказывает "уёбышность" пейсателя :)

Gozar 13.02.2012 13:58

Цитата:

Сообщение от bugmenot (Сообщение 157143)
ты или идиот или просто жырный, но про замыкания что подсказал спасибо... в гавноедском языке всё не так

for (var i = 0; i < buttons.length; ++i) {
                    var button = document.createElement("div"); 
                    button.className = "button";
                    button.innerHTML = buttons[i]["label"];
                    button.title =  buttons[i]["title"];
                    (function(i) {
                        button.onclick =  function() {
                            eval("self." + buttons[i]["method"] + "();");
                        }                
                    })(i);
                    iframeBar.appendChild(button);                
                }


то что нужно городить такой огород доказывает уёбышность данного языка

Скорее доказывает качество того, кто сидит передо монитором и городит такое извращение. Вместо того чтобы понять и применить то, что ему посоветовали.

Gozar 13.02.2012 13:59

Опоздал на полсекунды :D

bugmenot 13.02.2012 14:10

Цитата:

Сообщение от Gozar (Сообщение 157152)
Опоздал на полсекунды :D

и как же гуру нужно правельно напейсать этот фрагмент?

bugmenot 13.02.2012 14:11

Цитата:

Сообщение от DreamTheater (Сообщение 157150)
Это лишь доказывает "уёбышность" пейсателя :)

т.е. тебя раз ты пишешь на этом дерьме и оно тебе нравится

Gozar 13.02.2012 14:23

Цитата:

Сообщение от bugmenot (Сообщение 157154)
и как же гуру нужно правельно напейсать этот фрагмент?

Для начала не коверкать язык, а то скучно читать.

Цитата:

Сообщение от bugmenot (Сообщение 157155)
ты пишешь на этом дерьме

На дерьме можно писать вилами, палочкой, даже пальчиком, но это не может сравниться с языком программирования. Ты не копрофил случаем?

Такое сравнение не очень подходит. Скорее подойдет недалёкость или убогость, но не манипуляции с компостом.

А какой язык по твоему не дерьмо?

bugmenot 13.02.2012 14:25

Цитата:

Сообщение от Gozar (Сообщение 157156)
На дерьме можно писать вилами

ололо, IT-илита шютит!!!

Цитата:

Сообщение от Gozar (Сообщение 157156)
А какой язык по твоему не дерьмо?

Таковых нет. У каждого свои недостатки:
C/C++ - никому ненужное байтоебство
Java - громоздкость
Perl - нечитаемый код
PHP - over 9000 функций в основном пространстве, отсутствие встроеной поддержки юникода, краткого синтаксиса для массивов
Python - одновременно существуют две ветки, не полностью объектный например переменная a основного пространства не является свойством корневого элемента, функции - методами(даже как в том же Javascript)
Ruby - педерастичность, много сахара, паскалеподобный синтаксис

Aetae 13.02.2012 14:27

Забаньте этого жиртреста уже.

DreamTheater 13.02.2012 14:34

Цитата:

Сообщение от bugmenot (Сообщение 157157)
ололо, IT-илита шютит!!!



Таковых нет. У каждого свои недостатки:
C/C++ - никому ненужное байтоебство
Java - громоздкость
Perl - нечитаемый код
PHP - over 9000 функций в основном пространстве, отсутствие встроеной поддержки юникода, краткого синтаксиса для массивов
Python - одновременно существуют две ветки, не полностью обектный например переменная a основного пространства не принадлежит корневому элементу(даже как в том же Javascript)
Ruby - педерастичность, много сахара, паскалеподобный синтаксис

То есть все языки говно?

bugmenot 13.02.2012 14:37

Цитата:

Сообщение от DreamTheater (Сообщение 157159)
То есть все языки говно?

нет я так не говорил, я лишь утверждаю что дрочить на тот же жабаскрипт может только упоротый идиот

Gozar 13.02.2012 14:57

Цитата:

Сообщение от bugmenot (Сообщение 157161)
дрочить на тот же жабаскрипт может только упоротый идиот

Школоло детектед. Вот и не фапай на javascript.

Ну и
Цитата:

Сообщение от Gozar (Сообщение 157156)
какой язык по твоему не дерьмо?

Чуем чувствую, сейчас напишет ASP ;)

Смотрю карма-то у тебя растет как на дрожжах, скоро меня догонишь, будешь моим темным эго.

bugmenot 13.02.2012 15:27

Цитата:

Сообщение от Gozar (Сообщение 157166)
Школоло детектед. Вот и не фапай на javascript.

Ну и


Чуем чувствую, сейчас напишет ASP ;)

Смотрю карма-то у тебя растет как на дрожжах, скоро меня догонишь, будешь моим темным эго.

ололо

FINoM 13.02.2012 16:04

Ви таки поц

bugmenot 13.02.2012 16:15

А чаво ишаку не нравится я не пойму?

Строка: 113
Ошибка: 'buttons[...].label' - есть null или не является объектом

monolithed 13.02.2012 16:16

Цитата:

Сообщение от bugmenot
C/C++ - никому ненужное байтоебство

Не нужно путать С и С++ (и даже С++99 и С++11). В последнем никто мало кто количество байтов считает, особенно если нужна платформо-независимость и разрядность.
Цитата:

Сообщение от bugmenot
Java - громоздкость

Для кого?
Цитата:

Сообщение от bugmenot
Perl - нечитаемый код

Любой код не читаемый, когда не знаешь язык. В Perl есть конечно недостатки, с наличием двойного синтаксиса (к примеру тернарный оператор можно записать как : ? , а можно и так ?? !!), но также есть strict mode, который значительно минимизирует говнокодерство.
Цитата:

Сообщение от bugmenot
PHP - over 9000 функций в основном пространстве, отсутствие встроеной поддержки юникода, краткого синтаксиса для массивов

Поддержка юникода и краткого синтаксиса для массивов реализована в 5,4.
Цитата:

Сообщение от bugmenot
Python - одновременно существуют две ветки, не полностью объектный например переменная a основного пространства не является свойством корневого элемента, функции - методами(даже как в том же Javascript)

Чего? все члены класса в Python являются свойствами объекта __dict__
Цитата:

Сообщение от bugmenot
Ruby - педерастичность, много сахара, паскалеподобный синтаксис

Тоже самое можно сказать и про вас?!

bugmenot 13.02.2012 16:28

да короткий синтаксис гавноедский какой-то получился я целенаправленно за изменениями не следил осталось подождать ещё пока все слоупоки поддерживать PHP 5.4, но самое главное что массивы особенные в пыхепе

FINoM 13.02.2012 16:29

Цитата:

Сообщение от monolithed
Тоже самое можно сказать и про вас?!

Хаха, сахарный паскалеподобный педераст :D

DreamTheater 13.02.2012 16:33

Цитата:

Сообщение от FINoM (Сообщение 157196)
Хаха, сахарный паскалеподобный педераст :D

Третье так точно :lol:

bugmenot 13.02.2012 16:34

Цитата:

Сообщение от FINoM (Сообщение 157196)
Хаха, сахарный паскалеподобный педераст :D

нет ты! :haha:

FINoM 13.02.2012 17:02

Цитата:

Сообщение от bugmenot
нет ты!

Вычислю по IP, приду и сожру твоего кота.

bugmenot 13.02.2012 17:34

Цитата:

Сообщение от FINoM (Сообщение 157203)
Вычислю по IP, приду и сожру твоего кота.

вычисляй 127.0.0.1

GuardCat 13.02.2012 17:37

bugmenot, вычислю тебя по коту, приду и лишу тебя IP. Был бы IQ, можно было бы на него покуситься.

FINoM 13.02.2012 17:41

Цитата:

Сообщение от GuardCat
Был бы IQ, можно было бы на него покуситься.

Хокинг говорит, что IQ для неудачников.

GuardCat 13.02.2012 17:50

Цитата:

Сообщение от FINoM
Хокинг говорит, что IQ для неудачников.

Ну тесты на IQ не слишком валидны (меряют не только и не столько интеллект), потому нездоровый интерес к собственному коэффициенту интеллекта, измеренному соответствующими тестами может говорить о чём-то таком.

P.S.
Интересно, если срач разногласия возникают в теме, почему-то рождаются интересные (хотя и оффтопные) обсуждения :)

bugmenot 13.02.2012 18:00

Цитата:

Сообщение от GuardCat (Сообщение 157221)
Ну тесты на IQ не слишком валидны (меряют не только и не столько интеллект), потому нездоровый интерес к собственному коэффициенту интеллекта, измеренному соответствующими тестами может говорить о чём-то таком.

P.S.
Интересно, если срач разногласия возникают в теме, почему-то рождаются интересные (хотя и оффтопные) обсуждения :)

это не срачь тут нет никакого срача, для меня срач - это минимум 600 комментариев

FINoM 13.02.2012 18:02

GuardCat, все мы делали это в детстве, только стесняемся это признать.

GuardCat 13.02.2012 18:06

Цитата:

Сообщение от FINoM (Сообщение 157224)
GuardCat, все мы делали это в детстве, только стесняемся это признать.

Да это клёво, чё =). Можно один и тот же тест проходить регулярно и тащиться от роста IQ. Тока не надо никому рассказывать. Как мастурбация, короче :).

Mахmахmахimus 13.02.2012 19:25

Цитата:

Сообщение от FINoM
Хокинг говорит, что IQ для неудачников.

доставил


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