Асинхронно зареждане на JavaScript

diabolic.bg

The Old Wastelander
Нали скоро се жалвах, че съм гризнал дървото и отнесох наказание от Гугъл, в момента се опитвам чрез тестове с Page Speed Online да оптимизирам сайта си още, доколкото мога. Попаднах обаче на препоръка, която нищо не ми говори. Някой би ли ми обяснил как да направя JavaScript да зарежда асинхронно, защото имам следната забележка:
Код:
http://wasteland-bg.com/phpbb2/ зарежда 
http://connect.facebook.net/en_US/all.js синхронно.
Как по дяволите да влияя на външни скриптове?
По същия начин ми дава да отложа синтактичния анализ на скриптове, от които 2/3 са на Гугъл.
Код:
https://apis.google.com/js/plusone.js (3,1 КиБ)
http://translate.google.com/.../element.js?... (986 Б)
https://plusone.google.com/.../fastbutton?... (218 Б вграден JavaScript)
Те защо не са ги оптимизирали, а ми дават съвети как да аз да си ускоря зареждането като ме бавят техни скриптове?

Ще бъда благодарен, ако ми обясните и начина да отложа синтактичния анализ на скриптовете. Благодаря предварително!
 
Последно редактирано:
Re: Асинхронно зареждане на JavaScript

Когато използваш Like бутона като iframe, то си е асинхронно. Когато е XFBML може да ти забави зареждането на страницата, затова се зарежда асинхронно, както са описали в Developer Wiki-то.
 
Re: Асинхронно зареждане на JavaScript

Благодаря, разгледах го, но ми се струва нещо много сложно. И защо ми е това app id, няма ли начин да се направи без него? Как да се правя на девелопер като не съм?
 
Re: Асинхронно зареждане на JavaScript

Ами не е чак толкова сложно колкото изглежда. Първо кажи за какво въобще ще ти трябва JS SDK-то,дай малко от кода, който използваш. Иначе за appid, просто отиваш на facebook.com/developers и създаваш нов app, в настройките за site url или canvas беше,забравил съм,задаваш домейна от който ще извикваш този app (където ще стартираш all.js кода) и му взимаш appid-то.
 
Re: Асинхронно зареждане на JavaScript

Здравейте.
Нещо такова си мисля аз
Код:
<html>
	<head>
	<script>
	function loadJS() {
    		var e = document.createElement('script'); 
		e.async = true;
    		e.src = document.location.protocol + '//path/to/sctipt.js';
    		document.getElementById('body').appendChild(e);
  	}
	</script>
<body id="body" onload="loadJS()">
bla...
</body>
</html>
След зареждането на страницата се създава един js обект със съответният src и се добавя към бодито. Случва се и да не работи. Примерно този механизъм не успях да подкарам за скриптовете на гоолемапс.

Поздрави.
 
Re: Асинхронно зареждане на JavaScript

Ами не е чак толкова сложно колкото изглежда. Първо кажи за какво въобще ще ти трябва JS SDK-то,дай малко от кода, който използваш. Иначе за appid, просто отиваш на facebook.com/developers и създаваш нов app, в настройките за site url или canvas беше,забравил съм,задаваш домейна от който ще извикваш този app (където ще стартираш all.js кода) и му взимаш appid-то.
За нищо не съм казал, че ми трябва. Просто питах има ли прост начин да пусна асинхронно зареждане на лайк бутона на ФВ и това е.
 
Re: Асинхронно зареждане на JavaScript

Щом iframe на fb like е асинхронно, значи всичко е ок 🙂.
А дали може някой да сподели как може да се направи на свежо бутона асинхронно 🙂. Със метода на imagination ще стане ли?

Аз ползвам този код:
Код:
<a href="http://svejo.net/submit/?url=$perm"
     data-url="$perm"
     data-type="compact"
     id="svejo-button">Добави в Svejo</a>
<script type="text/javascript" src="http://svejo.net/javascripts/svejo-button.js"></script>
 
Re: Асинхронно зареждане на JavaScript

Здравейте,
не докрай тествано но на първо четене става
Код:
<html>
	<head>
	<script>
	function loadJS() {
    		var e = document.createElement('script'); 
		e.async = true;
    		e.src = document.location.protocol + '//svejo.net/javascripts/svejo-button.js';
    		document.getElementById('body').appendChild(e);
  	}
	</script>
<body id="body" onload="loadJS()">
<a href="http://svejo.net/submit/?url=http://www.dir.bg"  data-url="http://www.dir.bg"   data-type="compact"  id="svejo-button">Добави в Svejo</a>
</html>
Поздрави.
 
Re: Асинхронно зареждане на JavaScript

Здравейте,
не докрай тествано но на първо четене става
Код:
<html>
	<head>
	<script>
	function loadJS() {
    		var e = document.createElement('script'); 
		e.async = true;
    		e.src = document.location.protocol + '//svejo.net/javascripts/svejo-button.js';
    		document.getElementById('body').appendChild(e);
  	}
	</script>
<body id="body" onload="loadJS()">
<a href="http://svejo.net/submit/?url=http://www.dir.bg"  data-url="http://www.dir.bg"   data-type="compact"  id="svejo-button">Добави в Svejo</a>
</html>
Поздрави.

Между другото, това при мен не работи.
Но питах Гугъл и това стана: http://www.webmaster-source.com/2010/06/07/loading-javascript-asynchronously/
Поне зарежда бутона, пък не знам как да разбера дали наистина е асинхронно.
 
Re: Асинхронно зареждане на JavaScript

Когато използваш Like бутона като iframe, то си е асинхронно. Когато е XFBML може да ти забави зареждането на страницата, затова се зарежда асинхронно, както са описали в Developer Wiki-то.
Да, ама НЕ!
Направих fb.html, която съдържа скрипта на Лайк бутона, пуснах го да се зарежда във фрейм и резултатът е следния:
Код:
Следните ресурси се зареждат синхронно. Заредете ги асинхронно, за да намалите блокирането на визуализирането на страницата.
http://wasteland-bg.com/phpbb2/templates/fiblack3d/fb.html зарежда 
http://connect.facebook.net/en_US/all.js синхронно.
 
Re: Асинхронно зареждане на JavaScript

Пич, не знам на какъв език ти говоря, но нещо не ме разбираш. В момента използваш XFBML, не iframe кода, така че си е синхронно зареждането. За iframe отиди на http://developers.facebook.com/docs/reference/plugins/like/ и вземи iframe кода, не XFBML!
 
Re: Асинхронно зареждане на JavaScript

Пич, не знам на какъв език ти говоря, но нещо не ме разбираш. В момента използваш XFBML, не iframe кода, така че си е синхронно зареждането. За iframe отиди на http://developers.facebook.com/docs/reference/plugins/like/ и вземи iframe кода, не XFBML!
Аз съм си тъп по природа и не разбирам. Би ли ми обяснил това какво е:
Код:
<iframe height="30" frameborder="0" src="/phpbb2/templates/fiblack3d/fb.html" style="width: 100%; margin: 0; padding: 0; border: 0; overflow: hidden;" 
scrolling="no" border="0" allowtransparency="true"></iframe>
 
Re: Асинхронно зареждане на JavaScript

Отваряш http://wasteland-bg.com/phpbb2/templates/fiblack3d/fb.html, изтриваш всичко в body и слагаш това:

Код:
<iframe src="http://www.facebook.com/plugins/like.php?locale=bg_BG&href=http%3a%2f%2fwww.facebook.com%2fpages%2fFallout-Vault-BG-Bulgarian-Radioactive-Oasis-in-Wasteland%2f111733698896324%3fv%3dwall&layout=button_count&show_faces=true&width=100&action=recommend&font&colorscheme=light&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:150px; height:21px; float:left" allowTransparency="true"></iframe>
 

Back
Горе