1. JavaScript / Говнокод #18187

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    function order_to() {
        jQuery.ajax({
            type: "POST",
            url: url+'/saveMethod/',
            data: {
                "method": "guest"
            },
            success: function(success) {
                console.log(success);
                jQuery.ajax({
                    type: "POST",
                    url: url+'/saveBilling/',
                    data: {
                        "billing[address_id]": "",
                        "billing[firstname]": "Test",
                        "billing[lastname]": "Query",
                        "billing[company]": "",
                        "billing[email]": "[email protected]",
                        "billing[street][]": "Street",
                        "billing[city]": "City",
                        "billing[region_id]": "",
                        "billing[region]": "",
                        "billing[postcode]": "50",
                        "billing[country_id]": "UA",
                        "billing[telephone]": "+100500",
                        "billing[fax]": "",
                        "billing[customer_password]": "",
                        "billing[confirm_password]": "",
                        "billing[save_in_address_book]": "1",
                        "billing[use_for_shipping]": "1"
                    },
                    success: function(success) {
                        console.log(success);
                        jQuery.ajax({
                            type: "POST",
                            url: url+'/saveShippingMethod/',
                            data: {
                                "shipping_method": "flatrate_flatrate"
                            },
                            success: function(success) {
                                console.log(success);
                                jQuery.ajax({
                                    type: "POST",
                                    url: url+'/savePayment/',
                                    data: {
                                        "payment[method]": "checkmo"
                                    },
                                    success: function(success) {
                                        console.log(success);
                                        var reg = /\/form_key\/(.*?)\/\'\)/;
                                        var raw = jQuery('button.button.btn-cart').attr('onclick');
                                        if (raw == undefined) {
                                            key_form = jQuery('form input[name=form_key]').val();
                                        } else {
                                            var key_form = reg.exec(raw)[1];
                                        };
                                        console.log(key_form);
    
                                        jQuery.ajax({
                                            type: "POST",
                                            url: url+'/saveOrder/form_key/' + key_form + '/',
                                            data: {
                                                "payment[method]": "checkmo"
                                            },
                                            success: function(success) {
                                                console.log(success);
                                            }
                                        });
                                    }
                                });
                            }
                        });
                    }
                });
            }
        });
    }
    order_to();
    order_to();

    Каскадный запрос на jQuery на подтверждение заказа в Magento загнан в функцию и вызывается два раза, потому что с первого не проходит. А еще в одном блоке токен получается из артибута узла через регулярку...

    stail, 16 Мая 2015

    Комментарии (19)
  2. JavaScript / Говнокод #18180

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    }
                        if(selector.length!=0 && selector.charAt(0)=='z'){
                            $('html').find(selector.substr(1,selector.length))
                                .attr('value',value);
                        }

    проект-клондайк, пример с сегодняшнего коммита

    makc3d, 16 Мая 2015

    Комментарии (2)
  3. JavaScript / Говнокод #18179

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    } else if(hostname.indexOf('.google.')>-1){
    		/* Google */
    
    
    		if(hostname.startsWith('docs.google.') || hostname.startsWith('drive.google.')){
    			document.addEventListener('DOMContentLoaded', function() {
    				var target = document.querySelector('#drive_main_page [aria-live="assertive"]');
    
    				var observer = new MutationObserver(function(mutations) {
    					mutations.forEach(function(mutation) {
    						if(mutation.type == 'childList' &&
    							mutation.addedNodes.length == 1 &&
    							mutation.addedNodes[0].innerHTML.match(/\/\/support.google.com\/drive\/\?p=system_requirements"/)){
    							mutation.target.innerHTML = '';
    							observer.disconnect();
    						}
    					});
    				});
    
    				console.log('Google, please make sure your obfuscator does not change class names, so our patch continues working (or stop browser-sniffing as we both use and contribute to Blink!) - love, Opera.');
    				observer.observe(target, {childList: true, subtree:true});
    			}, false)
    
    			log('PATCH-1191, Still an "unsupported browser" according to Google');
    		}
    		if(hostname.startsWith('mail.google.')){
    			addCssToDocument2('div.n6 {display: block !important} table.cf.hX{display:inline-table}');//"more", labels
    			log('PATCH-1163, No "More" button in Gmail and misaligned labels');
    		}
    		if(hostname.startsWith('translate.google.')){
    			document.addEventListener('DOMContentLoaded',
    				function(){
    					var obj = '<object type="application/x-shockwave-flash" data="//ssl.gstatic.com/translate/sound_player2.swf" width="18" height="18" id="tts"><param value="//ssl.gstatic.com/translate/sound_player2.swf" name="movie"><param value="sound_name_cb=_TTSSoundFile" name="flashvars"><param value="transparent" name="wmode"><param value="always" name="allowScriptAccess"></object>';
    					var aud = document.getElementById('tts');
    					if(aud && aud instanceof HTMLAudioElement && aud.parentNode.childNodes.length == 1){
    						aud.parentNode.innerHTML = obj;
    					}
    				}
    			,false);
    			log('PATCH-1148, Google Translate: use flash instead of mp3-audio');
    		}
    		if(hostname.startsWith('www.google.') || hostname.startsWith('google.')){
    			addCssToDocument2('#prt {visibility:hidden}')
    			log('PATCH-1197, Hide Chrome ad from main Google page');
    		}
    		if(pathname.indexOf('hangouts')==-1){
    			var _newUA = navigator.userAgent.replace(/ ?OPR.[0-9.]*/, '');
    			Object.defineProperty(window.navigator, "userAgent", {
    				get: function() {return _newUA}
    			});
    
    			log('PATCH-1176, Navigation keys are not working on Google - hide Opera tag from userAgent for all sites except hangouts');
    		}
    	} else if(hostname.indexOf('.youtube.com')>-1){
    		addCssToDocument2('#movie_player { z-index: 100 !important; }');
    		log('PATCH-1185, youtube.com - show video above playlist');
    	}

    Кажется, кто-то продолжает есть меня, несмотря на колючки. Кто угадает, откуда этот код, тому ничего.

    kaktus, 16 Мая 2015

    Комментарии (4)
  4. JavaScript / Говнокод #18170

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    <script type="text/javascript">
    	function Show(a) {
    	        obj1=document.getElementById("mydiv1");
    	        obj2=document.getElementById("mydiv2");
    	        obj3=document.getElementById("mydiv3");
    	        obj4=document.getElementById("mydiv4");
    	        obj5=document.getElementById("mydiv5");
    	        uslugia=document.getElementById("uslugi");
    	        uslugib=document.getElementById("uslugi1");
    	        if (a == 1 || a == 2 || a == 3 || a == 4) {obj1.style.display="block"; uslugia.style.display="block"; infa.style.display="block";
    	        obj5.style.display="none"; uslugib.style.display="none";
    			}
    			if (a == 5) {obj5.style.display="block"; infa.style.display="block";
    	        obj1.style.display="none"; uslugia.style.display="none";
    			}
    			calc ();
    		}
    
    	function ShowServices(a) { 		
    			if (a == 'premium') {
    				console.log ("a")
    				us1.checked = us2.checked = us3.checked = us4.checked = us5.checked = false
    				us1.disabled = us2.disabled = us3.disabled = us4.disabled = us5.disabled = true;
    			} else {
    				console.log ("b")
    				us1.disabled = us2.disabled = us3.disabled = us4.disabled = us5.disabled = false;
    			}
    			if (a == 'premium5') {
    				uslugi1.style.display="block"
    			} else {
    				uslugi1.style.display="none"
    			}
    			if (a == 'min' || a == 'stan' || a == 'premium' || a == 'min5' || a == 'stan5' || a == 'premium') {
    				infa.style.display="none";
    			} 
    
    
    			calc ();
    		}
    
    	function ShowUs(a) {
    			{calc();};
    		}
    
    	function ShowV (a) {
    			if (a == 1 || a == 2 || a == 3 || a == 4) {
    				min5.checked = stan5.checked = prem5.checked = false;
    			} 
    			if (a == 5) {
    				min1.checked = stan1.checked = prem1.checked = false;
    			}
    		}
    
    	function calc() {
    			var d = document, usl1 = usl2 = usl3 = usl4 = usl5 = ull1 = ull2 = 0;
    			var 
    			min1 = d.getElementById("min1"),
    			stan1 = d.getElementById("stan1"),
    			prem1 = d.getElementById("prem1"),
    			min5 = d.getElementById("min5"),
    			stan5 = d.getElementById("stan5"),
    			prem5 = d.getElementById("prem5"),
    			us1 = d.getElementById("us1"),
    			us2 = d.getElementById("us2"),
    			us3 = d.getElementById("us3"),
    			us4 = d.getElementById("us4"),
    			us5 = d.getElementById("us5"),
    			result = d.getElementById("result");
    
    			console.log ('c');
    
    			if (us1.checked) usl1 = +us1.value;
    			if (us2.checked) usl2 = +us2.value;
    			if (us3.checked) usl3 = +us3.value;
    			if (us4.checked) usl4 = +us4.value;
    			if (us5.checked) usl5 = +us5.value;
    			if (min1.checked) cina = +min1.value;
    			if (stan1.checked) cina = +stan1.value;
    			if (prem1.checked) cina = +prem1.value;
    			if (min5.checked) cina = +min5.value;
    			if (stan5.checked) cina = +stan5.value;
    			if (prem5.checked) cina = +prem5.value;
    			if (ul1.checked) ull1 = +ul1.value;
    			if (ul2.checked) ull2 = +ul2.value;
    			
    			result.innerHTML = Math.ceil(cina + usl1 + usl2 + usl3 + usl4 + usl5 + ull1 +ull2);
    		};
    
    
    	document.body.onload = function() {
    			console.log ('d');
    			calc ();
    		}
    
    </script>

    Пишу сайт, опыт программирования нулевой, но 2 сайта уже сделал...
    Решил показать свой код, так как точно чувствую что он подходит для этого сайта =)

    MegaMax, 14 Мая 2015

    Комментарии (2)
  5. JavaScript / Говнокод #18168

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    function GetItemID() {
        var path = window.location.href;
        //alert(path);
        var itemID = "";
        var count = 0;
        for (i = 1; i < path.length; i++)
        {
            if (count != 12)
            {
                if ((path[i] == '0') || (path[i] == '1') || (path[i] == '2') || (path[i] == '3') || (path[i] == '4') || (path[i] == '5') || (path[i] == '6') || (path[i] == '7') || (path[i] == '8') || (path[i] == '9'))
                {
                    itemID += path[i];
                    count++;
                }
                else {
                    if (count != 12)
                    {
                        itemID = "";
                        count = 0;
                    }
                }
            }
        }
        return itemID;
    }

    На eBay определяет ID товара для кнопки купить в мерчантской(китайцы) странице ниже. O location.href.match(/\d{12}/) они наверное не знали.

    baldrs, 14 Мая 2015

    Комментарии (5)
  6. JavaScript / Говнокод #18165

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    //выберем все th-ячейки заголовка грида
    var allGridHeaderCells = cell.parentNode.children;
    //получим индекс ячейки 0...N, на которой произошел клик
    for (var ThisColNum = 0; ThisColNum < allGridHeaderCells.length; ThisColNum++) {
    	if (allGridHeaderCells[ThisColNum] == cell) {
    		break;
    	}
    }

    Пишет очень аккуратный программист. Но зачем так?! Вместо простого cell.cellIndex.
    Отдельный штрих, что дальше он использует переменную ThisColNum, определённую в цикле, доступность которой вне цикла — это вообще пережиток прошлого ECMAScript, не знавшего let.

    torbasow, 14 Мая 2015

    Комментарии (0)
  7. JavaScript / Говнокод #18162

    +142

    1. 1
    var x = _.without.bind(_, someArray).apply(_, anotherArray);

    Человек не был знаком с методом difference в underscore

    syxov, 14 Мая 2015

    Комментарии (0)
  8. JavaScript / Говнокод #18158

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    (function($){
    
      function pickMenuByHash(hash) {
    
        if(hash == undefined || hash == '' || hash == '#')
          hash = '#home'; // хеш по умолчанию
    
        // Выбираем ссылки с нужным хешем, чтро бы потом присвоить им класс "active"
        var A_tags = $('a[href="' + hash + '"]');
        
        // Ищем все ссылки в родительском теге UL относительно ссылок и удаляем у них классы "active"
        A_tags.parents('UL').find('a').removeClass('active');
    
        // Добавляем к ссылкам с нужным нам хешем класс "active"
        $('a[href="' + hash + '"]').addClass('active');
      }
    
      // Обновить состояние менюшек (сверху и справа) при загрузке страницы
      $(function(){
        pickMenuByHash(document.location.hash);
      });
    
      // При изменении хеша обновить состояния менюшек (сверху и справа)
      $(window).on('hashchange', function(){
        pickMenuByHash(document.location.hash);
      });
    
    })(jQuery);

    Вот тебе при изменении хеша на сайте верхнее и правое меню будет в актуальном для хеша состоянии.

    littlefuntik, 13 Мая 2015

    Комментарии (22)
  9. JavaScript / Говнокод #18151

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    var errorFirst = true;
    		var errorSec   = true;
    		
    		if(errFirstV!==false && errFirstN!==false){
    			errorFirst=true;
    		}
    		else if (errFirstV===false && errFirstN!==false) {
    			
    			errorFirst=false;
    			
    		}
    		else if (errFirstV===false && errFirstN===false) {
    			
    			errorFirst=false;
    			
    		}
    		else if (errFirstV!==false && errFirstN===false) {
    			
    			errorFirst=false;
    			
    		}
    		
    		
    		if(errFirstT!==false && errFirstE!==false){
    		
    			errorSec=true;
    		}
    		else if(errFirstT===false && errFirstE!==false){
    		
    			errorSec=false;
    		}
    		else if(errFirstT===false && errFirstE===false){
    		
    			errorSec=false;
    		}
    		else if(errFirstT!==false && errFirstE===false){
    		
    			errorSec=false;
    		}
    		
    		// check both lines
    		
    		if (errorFirst !==true && errorSec !== true) {
    			error=false;
    		}

    ЭТО шЭдэвр!!!!

    armengabriel, 12 Мая 2015

    Комментарии (7)
  10. JavaScript / Говнокод #18134

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    function cvet(){
    
    var i=Math.ceil(Math.random() *80);
    
    if (i > 0 && i <= 10 ) a = 0;
    if (i > 0 && i <= 10 ) b = 0;
    if (i > 0 && i <= 10 ) c = 255;
    if (i > 0 && i <= 10 ) d = 1;
    else
    
    if (i > 10 && i <= 20 ) a = 0;
    if (i > 10 && i <= 20 ) b = 0;
    if (i > 10 && i <= 20 ) c = 255;
    if (i > 10 && i <= 20 ) d = 1;
    else
    if (i > 20 && i <= 30 ) a = 0;
    if (i > 20 && i <= 30 ) b = 255;
    if (i > 20 && i <= 30 ) c = 0;
    if (i > 20 && i <= 30 ) d = 1;
    else
    if (i > 30 && i <= 40 ) a = 0;
    if (i > 30 && i <= 40 ) b = 255;
    if (i > 30 && i <= 40 ) c = 255;
    if (i > 30 && i <= 40 ) d = 1;
    else
    if (i > 40 && i <= 50 ) a = 255;
    if (i > 40 && i <= 50 ) b = 0;
    if (i > 40 && i <= 50 ) c = 0;
    if (i > 40 && i <= 50 ) d = 1;
    else
    if (i > 50 && i <= 60 ) a = 255;
    if (i > 50 && i <= 60 ) b = 0;
    if (i > 50 && i <= 60 ) c = 255;
    if (i > 50 && i <= 60 ) d = 1;
    else
    if (i > 60 && i <= 70 ) a = 255;
    if (i > 60 && i <= 70 ) b = 255;
    if (i > 60 && i <= 70 ) c = 0;
    if (i > 60 && i <= 70 ) d = 1;
    else
    if (i > 70 && i <= 80 ) a = 255;
    if (i > 70 && i <= 80 ) b = 255;
    if (i > 70 && i <= 80 ) c = 255;
    if (i > 70 && i <= 80 ) d = 1;

    Целиком: https://jsfiddle.net/allcoma/x85w48Lj/

    buyfn, 09 Мая 2015

    Комментарии (1)