Objasneni posloupnosti kodu

Programovacie jazyky, rady, poradňa...
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Objasneni posloupnosti kodu

Príspevok od používateľa fikotek »

Proc script prestane fungovat kdyz scripty co jsou ve spod presunu tesne pod "modernizr.custom.js".? Muzete mi to nekdo objasnit prosim?

Hlavicka vypada takto

Kód: Vybrať všetko

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <!--<link rel="stylesheet" type="text/css" href="/design/css/skeleton.css" media="all" />-->
    <link rel="stylesheet" type="text/css" href="/design/css/skeleton1200.css" media="all" />
    <link rel="stylesheet" type="text/css" href="/design/css/normalize.css" media="all" />
    <link rel="stylesheet" type="text/css" href="/design/css/project-style.css" media="all" />

    <link rel="shortcut icon" href="/design/img/favicon.ico" type="image/x-icon" />

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
        !window.jQuery && document.write(
        '<script type="text/javascript" src="/design/js/jquery-1.11.1.min.js"><\/script>')
    </script>

    <link rel="stylesheet" type="text/css" href="/design/js/owl/owl.carousel.css" />
    <link rel="stylesheet" type="text/css" href="/design/js/owl/owl.theme.css" />
    <script type="text/javascript" src="/design/js/owl/owl.carousel.js"></script>

    <link rel="stylesheet" type="text/css" href="/design/js/colorbox/colorbox.css" media="all" />
    <script type="text/javascript" src="/design/js/colorbox/jquery.colorbox.js"></script>

    <script type="text/javascript" src="/design/js/scripts.js"></script>
Funkcni script

Kód: Vybrať všetko

<!DOCTYPE html>
<html lang="cs">
<head>

	<title></title>
    <meta name="description" content="" />
    <meta name="keywords" content="" />
   	<meta charset="utf-8" />
    <meta name="author" content="" />
    <meta name="robots" content="ALL" />

	<?php include('_inc/head.php'); ?>

    <script type="text/javascript" src="/design/js/modernizr.custom.js"></script>

</head>
<body>

<div class="container">
    <div class="sixteen columns">
        <div class="morph-button morph-button-overlay morph-button-fixed">
        	<button type="button">More Info</button>
        	<div class="morph-content">
        		<div>
        			<div class="content-style-overlay">
        				<span class="icon icon-close">Close the overlay</span>
        				<h2>About Parsley</h2>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        			</div>
        		</div>
        	</div>
        </div>
    </div>
</div>
    <script type="text/javascript" src="/design/js/classie.js"></script>
    <script type="text/javascript" src="/design/js/morphingbuttons/uiMorphingButton_fixed.js"></script>
		<script>
			(function() {
				var docElem = window.document.documentElement, didScroll, scrollPosition;

				// trick to prevent scrolling when opening/closing button
				function noScrollFn() {
					window.scrollTo( scrollPosition ? scrollPosition.x : 0, scrollPosition ? scrollPosition.y : 0 );
				}

				function noScroll() {
					window.removeEventListener( 'scroll', scrollHandler );
					window.addEventListener( 'scroll', noScrollFn );
				}

				function scrollFn() {
					window.addEventListener( 'scroll', scrollHandler );
				}

				function canScroll() {
					window.removeEventListener( 'scroll', noScrollFn );
					scrollFn();
				}

				function scrollHandler() {
					if( !didScroll ) {
						didScroll = true;
						setTimeout( function() { scrollPage(); }, 60 );
					}
				};

				function scrollPage() {
					scrollPosition = { x : window.pageXOffset || docElem.scrollLeft, y : window.pageYOffset || docElem.scrollTop };
					didScroll = false;
				};

				scrollFn();

				var el = document.querySelector( '.morph-button' );

				new UIMorphingButton( el, {
					closeEl : '.icon-close',
					onBeforeOpen : function() {
						// don't allow to scroll
						noScroll();
					},
					onAfterOpen : function() {
						// can scroll again
						canScroll();
						// add class "noscroll" to body
						classie.addClass( document.body, 'noscroll' );
						// add scroll class to main el
						classie.addClass( el, 'scroll' );
					},
					onBeforeClose : function() {
						// remove class "noscroll" to body
						classie.removeClass( document.body, 'noscroll' );
						// remove scroll class from main el
						classie.removeClass( el, 'scroll' );
						// don't allow to scroll
						noScroll();
					},
					onAfterClose : function() {
						// can scroll again
						canScroll();
					}
				} );
			})();
		</script>
</body>
</html>
Nefunkcni script

Kód: Vybrať všetko

<!DOCTYPE html>
<html lang="cs">
<head>

	<title></title>
    <meta name="description" content="" />
    <meta name="keywords" content="" />
   	<meta charset="utf-8" />
    <meta name="author" content="" />
    <meta name="robots" content="ALL" />

	<?php include('_inc/head.php'); ?>

    <script type="text/javascript" src="/design/js/modernizr.custom.js"></script>
    <script type="text/javascript" src="/design/js/classie.js"></script>
    <script type="text/javascript" src="/design/js/morphingbuttons/uiMorphingButton_fixed.js"></script>
		<script>
			(function() {
				var docElem = window.document.documentElement, didScroll, scrollPosition;

				// trick to prevent scrolling when opening/closing button
				function noScrollFn() {
					window.scrollTo( scrollPosition ? scrollPosition.x : 0, scrollPosition ? scrollPosition.y : 0 );
				}

				function noScroll() {
					window.removeEventListener( 'scroll', scrollHandler );
					window.addEventListener( 'scroll', noScrollFn );
				}

				function scrollFn() {
					window.addEventListener( 'scroll', scrollHandler );
				}

				function canScroll() {
					window.removeEventListener( 'scroll', noScrollFn );
					scrollFn();
				}

				function scrollHandler() {
					if( !didScroll ) {
						didScroll = true;
						setTimeout( function() { scrollPage(); }, 60 );
					}
				};

				function scrollPage() {
					scrollPosition = { x : window.pageXOffset || docElem.scrollLeft, y : window.pageYOffset || docElem.scrollTop };
					didScroll = false;
				};

				scrollFn();

				var el = document.querySelector( '.morph-button' );

				new UIMorphingButton( el, {
					closeEl : '.icon-close',
					onBeforeOpen : function() {
						// don't allow to scroll
						noScroll();
					},
					onAfterOpen : function() {
						// can scroll again
						canScroll();
						// add class "noscroll" to body
						classie.addClass( document.body, 'noscroll' );
						// add scroll class to main el
						classie.addClass( el, 'scroll' );
					},
					onBeforeClose : function() {
						// remove class "noscroll" to body
						classie.removeClass( document.body, 'noscroll' );
						// remove scroll class from main el
						classie.removeClass( el, 'scroll' );
						// don't allow to scroll
						noScroll();
					},
					onAfterClose : function() {
						// can scroll again
						canScroll();
					}
				} );
			})();
		</script>
</head>
<body>

<div class="container">
    <div class="sixteen columns">
        <div class="morph-button morph-button-overlay morph-button-fixed">
        	<button type="button">More Info</button>
        	<div class="morph-content">
        		<div>
        			<div class="content-style-overlay">
        				<span class="icon icon-close">Close the overlay</span>
        				<h2>About Parsley</h2>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        				<p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p>
        				<p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p>
        			</div>
        		</div>
        	</div>
        </div>
    </div>
</div>

</body>
</html>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa audiotrack »

lebo ich nemáš v body onload evente, ale iba ako anonymnú funkciu. Ak je to na spodu, celá page je už vyrendrovaná keď k ním príde, a teda existujú všetky elementy s ktorými v ňom pracuješ. Ak je tej js na začiatku, pokúšaš sa pristúpiť k objektom ktoré ešte neexistujú
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa awtt »

Inac preco to chces presunut na vrch ? Skripty by si mal stale davat na koniec body aby si neblokoval page rendering.
(Ak nepouzivas modernizr css classy tak aj ten na koniec body)
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa fikotek »

Dekuji Audio za vysvetleni.
awtt: takze ten include <?php include('_inc/head.php'); ?> by mel byt nad ukoncovacim tagem </body> ? Teda az na ty css ktere by zustali v <head>.
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa weroro »

Ak sa ti z toho podarí vyhodiť ten meta a dať ho na pevno na začiatok, tak áno. Ale osobne by som asi radšej upravil samotný súbor head.php a vytvoril si ešte jeden nový linkage.php do neho presunul všetko z head.php okrem meta a ten nový súbor dal pred </body> cez include a head.php nechať tam kde je teraz.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa audiotrack »

ono tak striktne by som sa k tomu nestaval, že js musí byť na konci. Ono to záleží dosť od toho čo ten kod robí. Zase môže nastať niekde inde chyba (výpadok spojenia, chyba v inom js a pod.) a ten koncový skript sa nevykoná, aj keď stránka je na pohľad dočítana celá. Na koniec by som odporúčal dávať skripty, ktoré nie sú existenčne dôležité (google analytics a pod.). Tie bez ktorých stránka nefunguje alebo nemá zmysel by som dal do hlavičky ale do onload eventu aby sa spustili až po kompletnom načítaní. Na spomalenie rendrovania by som v dnešnej dobe niekoľkojadrových CPU a >4GB RAM vôbec nebral ohľad, pokiaľ to nie je one page aplikácia s tisícami riadku javascriptu alebo mobilná verzia ale bežná stránka.
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Re: Objasneni posloupnosti kodu

Príspevok od používateľa awtt »

Ale tu ide aj oto ako rychlo sa stiahnu vsetky tie veci v hlavicke, takze mozes mat aj milion ram, ked raz bude mat pomale pripojenie, alebo cdn nejake issues, budes vidiet bielu stranku kym sa ti tie kniznice nenacitaju.
Dat js do hlaciky a volat ho na document ready je asi uplne to najhorsie co mozes spravit.
Google ta dokonca zato bude aj penalizovat, mozes si otom precitat tu: http://www.feedthebot.com/pagespeed/ren ... cking.html
Napísať odpoveď