2013-09-07 15 views
7

Czy istnieje alternatywne źródło dla javascript w HTML5? Na przykład używam jQuery i mam go lokalnie. Ale mogę dodać atrybut alt, więc jeśli to nie zadziała, jQuery Google załaduje się?Czy masz alternatywne źródło dla skryptu?

Jeśli to działa, kod będzie wyglądał tak: <script src="enter your text here.js" alt="googlescode"></script>

+0

Są tam wiele ładowarki skrypt napisany w języku JavaScript. Czy założymy, że chcesz statyczne rozwiązanie HTML? –

+0

Jasne, ale nie o to chodzi w moim pytaniu. – tjons

Odpowiedz

5

Jeśli jest to jQuery, warto spojrzeć na this article.

Snippet:

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js"></script> 
<script> 
    if (typeof jQuery == 'undefined') { 
     document.write(unescape("%3Cscript src='/js/jquery-2.0.0.min.js' type='text/javascript'%3E%3C/script%3E")); 
    } 
</script> 
5

Tak, można to zrobić. HTML5 Boilerplate ma dobry przykład ładowania jQuery.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script> 

Ale używa go na odwrót. Jeśli skrypt z google nie może zostać załadowany, wraca do lokalnego skryptu.

W pierwszej kolejności należy załadować wersję CDN, ponieważ ładuje się szybciej niż wersja "lokalna".

+0

Na moim komputerze stwierdzam, że lokalne obciążenia są znacznie szybsze. – tjons

+4

Jeśli ładujesz na localhost, jest to oczywiście szybsze, ale nie w rzeczywistym środowisku produkcyjnym. Możesz przeczytać ten artykuł, który wyjaśnia jego zalety. http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/ – Sebsemillia

1

Przy wdrażaniu ich zdałem sobie sprawę, wszystkie byłe odpowiedzi mają wspólny problem, że Chrome będzie blokować ich powolnych połączeń od document.write jest synchroniczny funkcja. Problem został omówiony w artykule this post.

Rozwiązanie zazwyczaj korzysta z programu ładującego moderns lub wstępnie kompiluje kod js.

Jeśli jednak Twój przypadek użycia nadal wymaga takiego podejścia, musisz użyć połączenia asynchronicznego. Ilustratywnym przykładem jest the way Google Analytics is loaded.

Zasadniczo kod powyżej przekłada się:

<script>window.jQuery || (function(){ 
     // Create the DOM node 
     a=document.createElement('script'); 
     a.src="http://path-to-the-script.js"; 
     a.async=1; 
     // Find a node, and insert the script before it 
     m=document.getElementsByTagName('script')[0]; 
     m.parentNode.insertBefore(a,m); 
    })()</script> 
Powiązane problemy