Poradie nacitavania skriptov a volania jquery

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tomas.stofik
Člen | 33
+
0
-

Zdravim Vas,

Riesim uz asi druhy tyzden v akom poradi usporiadat nalinkovane jquery skripty a volanie jquery kodu v nette:
konkretne pouzivam nette.ajax, history, google maps, highlight plugin a zurb foundation.
Pokial requesty niesu ajaxove tak s nicim nieje problem no pokial su ajaxove tak sa deju veci ako napriklad nenacitanie google maps, plugin na zmenu syntaxe v tagu code sa nezmeni atd atd…skusal som menit poradie skriptov ale zbytocne. Co sa jquery tyka tak som zaciatocnik a v ramci svojich vedomosti som vyskusal vsetko co som vedel no ani google velmi nepomohol. Ak sa niekto stretol s niecim podobnym, prosim poradte Mi. Myslim si ze je to len drobnost no nemozem na to prist. Dakujem vsetkym :)

Jiří Nápravník
Člen | 710
+
0
-

Podle mě problém je v tom, že máš ten skript někde a to nepoíláš v té ajaxové odpovědi. Například, máš v nějakým externím javascriptu načtení google mapy. A když zavoláš ajaxový požadavek, tak sice vrátíš napříkald překreslenou nějakou část, ale ta mapa se logicky nenačte, protože ona „se načetla při tom minulém/prvním requestu“

Řešení? Pokud píšeš, že používáš nette.ajax, tak všechno co máš v těch různých js a chceš mít i po ajaxu, tak dej do load eventu nějak takto:

(function($, undefined) {

$.nette.ext({
	load: function (xhr, settings) {
		//tady inicializaci všeho co potřebujes
	}
});

})(jQuery);
tomas.stofik
Člen | 33
+
0
-

Tu je kod z html dokumentu:

<script src=„js/jquery-2.1.1_min.js“></script>
<script src=„js/nette.ajax.js“></script>
<script src=„js/history.ajax.js“></script>
<script src=„js/foundation.min.js“></script>
<script src=„js/extensions/spinner.ajax.js“></script>
<script src=„js/masonry.pkgd_min.js“></script>
<script src=„js/highlight/highlight.pack.js“></script>
<script src=„https://maps.googleapis.com/maps/api/js?v=3.exp“></script>
<script src=„js/main.js“></script>
<div id=„snippet–scripts“>
<script></script>

<script>
$(document).ready(function() {
	$('html, body').animate( { scrollTop: $('#top').offset().top } , 1000);
} );
</script>
<script>
// This example adds a marker to indicate the position
// of Bondi Beach in Sydney, Australia
function initialize() {
  var mapOptions = {
	zoom: 18,
	center: new google.maps.LatLng(48.2183511,16.320684),
	disableDefaultUI: true
  }
  var map = new google.maps.Map(document.getElementById('map'),
								mapOptions);

  var image = 'img/marker1.png';
  var myLatLng = new google.maps.LatLng(48.2183511,16.320684);
  var beachMarker = new google.maps.Marker({
	  position: myLatLng,
	  map: map,
	  icon: image
  } );
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>

</div>

Toto je kod z: main.js

// Syntax highlight
$(document).ready(function() {
$(‚code‘).each(function(i, e) { hljs.highlightBlock(e) } );
} );

// Open link in new window
$(‚a[rel=„external“]‘).click(function() {
window.open($(this).attr(‚href‘));
return false;
} );

$(function () {

// Hiding with JavaScript
$(‚.js‘).show();
$(‚.nojs‘).hide();

// Nette
$.nette.init();

// ZURB Foundation
$(document).foundation();

// Spinner
$.nette.ext(‚spinner‘);

$.nette.ext( {

load: function (xhr, settings) {

//////////////////////////////////////////////////////////////////////////// Init start

// Syntax highlight
$(‚code‘).each(function(i, e) { hljs.highlightBlock(e) } );

//////////////////////////////////////////////////////////////////////////// Init end

}

} );

} );

Tie google mapy som nerozbehal no code musim uvadzat pred aj po inicializacii nette a jedine vtedy to funguje aj po ajax requeste aj po obnoveni.

Som fakt lama do ajaxu a neviem ci sa nepustam do niecoho na co zatial nemam :(

Dakujem za vsetky rady