• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

nix geht ohne alert?

regatoni

New member
Hallo,
ich bin relativ neu in der JS programmierung.
Ich soll im Rahmen einer Bachelorarbeit eine Webseite für mobile Geräte erstellen.
Um die Diagramm anzuzeigen benutze ich Charts.js. Damit sich die Göße automatisch anpasst sobald das Display gedreht wird habe ich folgendes gemacht.

HTML:
	$(window).resize(function() 
	{
// Wenn hier kein alert() kommt geht das nicht.
  		location.reload();
	});
Die Charts.js Datei habe ich mittels
HTML:
$(document).width() *0.8;
etc angepasst.

Leider geht das ganze nicht wenn ich kein alert() vor dem reaload ausführe.

Das Gleiche habe ich bei den onchange Methoden der range-slider die ich benutze.



Hat jemand vllt eine Idee woran das liegen könnte?
Für Antworten wäre ich sehr sehr sehr dankbar!!

MfG Patrick



Hier mal der relavante Code:
HTML:
//Variablen
var currentPage = 0;
var Seiten = new Array();

/*
 * Diese Funktion dient dazu, herauszufinden, an welcher Stelle sich der Besucher befindet, dazu
 * wird mit activePage die aktuelle ID der Seite ermittelt und dann mit dem Array verglichen
 */
function currentPageAnalyse() {
		var activePage = $.mobile.activePage[0].id;
		
		for(i = 0; i < Seiten.length; i++) 
		{
			if(Seiten[i] == activePage) {
				currentPage = i;
				break;
			}
		}	
}

/*
 * Swipe-Effekt
 */
jQuery(document).ready(function() {
	
	//################################################ Seiten zaehlen fuer swipe

	var SeitenAnzahl = $("div[data-role=page]").size();
			
	for(var a = 1; a <= SeitenAnzahl; a++){
		Seiten.push($("div[data-role=page]").get(a-1).id);
	}
	
	
	
	
	//#########################################Swipe
	$(document).on('pagebeforeshow', currentPageAnalyse);	//----- Wenn Seite geladen wird
	//$(document).on('swipeleft', swipeLeft);				//----- Swipe left
	//$(document).on('swiperight', swipeRight);				//----- Swipe right
	
	function swipeLeft(event) 
	{
		if(currentPage + 1 < Seiten.length) {
			$.mobile.changePage('#' + Seiten[currentPage + 1], {transition: "slide"});	
		}
	}
	function swipeRight(event) {
		if(currentPage > 0) {
			$.mobile.changePage('#' + Seiten[currentPage - 1], {transition: "slide", reverse: true});	
		}
	}
	
	//############################## Funktionen für Button einbinden
	//Button: Logout
	try{
		document.getElementById("logoutButton").onclick = neuladen;
	}catch(err){};
	//Button: Login
	try{
		document.getElementById("loginButton").onclick = neuladen;
	}catch(err){};
	//Button: Sichern
	try{
		document.getElementById("sichernButton").onclick = testfunktion;
	}catch(err)	{};
	
	//------------------------- Laedt nach 0.5 Sekunden die Seite neu
	function neuladen()
	{
		setInterval(function(){
			//alert("Test");
			location.reload();
			},500);

		
	}
	
	
	//############################### Range-Slider-Funktionen
	try{
		 //########################## Wenn ich hier kein alert ausführe wird kein haendler eingetragen!

		alert("Das muss sein da sonst die Slider nicht gehen");
		aenderungInTextfeldFarbe();

		document.getElementById("sliderR").onchange = aenderungInTextfeldFarbe;
		document.getElementById("sliderG").onchange = aenderungInTextfeldFarbe;
		document.getElementById("sliderB").onchange = aenderungInTextfeldFarbe;
	}
	catch(err)
	{
		alert("slider geht nicht");
	};
	


//############################ Resize
// Wenn die Groesse der seite geaendert wir neuladen, wegen diagrammgroesse
	
	$(window).resize(function() 
	{
		
		// ##################Auch hier geht nix ohne alert!!!!!!!		
  		//alert("Resize\n "+ $(document).width() +" x "+ $(document).height());
  		location.reload();
	});

});	
//------------------------------------------------------------------------------------------------------------------



function testfunktion()
{
	alert("Testfunktion");
	document.getElementById("farbFeld").style.backgroundColor ="red";
}
 
Zuletzt bearbeitet von einem Moderator:
Das klingt sehr seltsam. Bekommst du eventuell beim initialen Aufruf bzw. beim verkleinern des Fensters irgendwelche JS Fehler?
 
Kannst du uns mal einen Testlink gehen, wo wir uns das live ansehen können?

PS: zur Sicherheit: Fehlerkonsole
PPS: den Array-Konstruktor sollte man besser nicht benutzen. Das Arrayliteral ist kürzer und sicherer.
PPPS: Schau' dir mal Array.indexOf() an...
 
Hm... das scheint ein Problem vom Firefox zu sein. Im IE und Chrome funktioniert's...

Ein
Code:
window.setTimeout(function(){location.reload();}, 0);
beseitigt die Syntome, aber ich finde das ja extrem nervig, dass die Seite dann neu läd'. Gibt es von der Chart.js nicht eine Funktion, in der du die Größe neu einstellen kannst?

Das mit den Slidern ist auch seltsam - kannst du da auch mal eine Version ohne alert machen?
 
ja das mit dem neuladen der seite war nicht sonderlich schön.
hab das ganze jetzt so geändert:
HTML:
	$(window).resize(function() 
	{
		//Ohne diese Abfrage laed Androidbrowser beim scrollen im Vollbild
		if(breite != $(document).width() )
		{
			breite = $(document).width();
			//Diagramme neu zeichnen
		  	diag1 = new Chart(document.getElementById("chart1").getContext("2d")).Bar(barChartData1);
		  	diag2 = new Chart(document.getElementById("chart2").getContext("2d")).Bar(barChartData2);
	  	}
	});

Das funktioniert eigentlich. Allerdings zeichnet mit mein Android Telefon zwei Diagramme übereinander...
Im IE werden die Diagramme auch nicht richtig angezeit. naja das bekomme ich vllt noch mit css oder sowas hin. Aber bei den 2 Diagrammen übereinander hab ich keine Ahnung.


Wenn ich das alert weg mache funktionieren die Slider nur im IE

http://patrick-rieger.de/Bachelor3


Vielen Dank
Patrick
 
Zuletzt bearbeitet von einem Moderator:
sorry wegen den Tags.
Die gehen bei dir? also wird auch die Farbe in dem Feld verändert wenn man die Slider bewegt?

Ich habe nur einen CSS fehler... in der overlay.js .... aber da hat man doch eigentlich immer irgendwelche Fehler
JS hat sonst keine Fehler. Zumindest keine die er mir anzeigt.

die Slider kann ich zwar bedienen, aber es ändert sich die Farbe nicht
 
Oh... auf die Farbe hab' ich gar nicht geachtet...

Das Problem liegt wahrscheinlich daran, dass du eine veraltete Technik verwendest um das onchange-Event zu registrieren. Du hast doch jQuery am Start - dann verwende das doch auch um die (alle) Eventlistener zu registrieren.
Code:
$("#sliderR").onchange(aenderungInTextfeldFarbe);
 
Da ist dieses jquery.mobile, das den Slider erzeugt, schuld. Das "degeneriert" die <input>s und dadurch gehen alle Eventlistener, die man vorher dran gebunden hat, verloren.

Führe das Ganze mal in pageinit aus: jQuery Mobile Docs - Events
 
Zurück
Oben