# Webapp für Iphone Safari Browser und Links



## kralo (30. Mai 2012)

Ich arbeite gerade an einer Webapp für das Iphone.
Ich habe leider keine Ahnung von Java und das Lernen würde derzeit zu lange dauern. Darum bin ich hier auf der Suche nach Hilfe.

Das Problem das ich habe ist folgendes:

Ich benutze Joomla als CMS ,weil Joomla die Seiten immer neu ladet kommt es zu Problemen und der Safari wird aus der Webapp aufgerufen.
Darum habe ich folgendes Script eingebaut das ich unter how to make an iPhone template for joomla (web app ready!) gefunden habe es sorgt dafür, dass die Links in der Webapp aufgerufen werden.

<script type="text/javascript">
var iWebkit;if(!iWebkit){iWebkit=window.onload=function(){function fullscreen(){var a=document.getElementsByTagName("a");for(var i=0;i<a.length;i++){if(a_.className.match("noeffect")){}else{a.onclick=function(){window.location=this.getAttribute("href");return false}}}}function hideURLbar(){window.scrollTo(0,0.9)}iWebkit.init=function(){fullscreen();hideURLbar()};iWebkit.init()}}
</script>

Das Problem ist nun das ich jedoch auch externe Links haben will (auf meine Website z.B ) , darum wollte ich fragen ob mir wer das Script anpassen kann, so das es nur für Links in einem oder mehreren ausgewählten Div’s greift. 

Ich bin sehr dankbar für jede Hilfe._


----------



## MarderFahrer (31. Mai 2012)

Ich denke nicht, dass man das script anpassen muss. So wie es aussieht, bringt es diese Funktion bereits mit. Man muss sie nur einsetzen.

Im Prinzip läuft das Script über alle "a container", sprich Hyperlinks auf der Seite und überall dort, wo diese container nicht der Klasse "noeffect" angehören, werden die Links angepasst, damit sie im selben Fenster aufegrufen werden.

Du müsstest also eigentlich nur sämtliche externen Links mit der Klasse "noeffect" versehen und dann sollten sie eigentlich in neuen Fenstern öffnen.

Also in etwa so. Dieser Link sollte im neuen Fenster aufgehen:


```
<a class='noeffect' href="http://www.w3schools.com">Visit W3Schools</a>
```

Und dieser sollte im aktuellen Fenster geöffnet werden:

```
<a href="http://www.w3schools.com">Visit W3Schools</a>
```


----------



## Daniel_Biber (9. Sep 2012)

Ich weiß nicht warum, aber bei mir funktioniert das mit dem oben genanten Code nicht... Kann mir jemand helfen? Habe es ganz normal in die HTML Datei eingefügt und auch schon mit einer externen .js Datei versucht- beides funktioniert nicht


----------



## MarderFahrer (10. Sep 2012)

Ich weiß nicht wie pingelig JavaScript mit Line Abschlüssen umgeht, aber wenn man den Code mal anständig formatiert:


```
<script type="text/javascript">
var iWebkit;
if(!iWebkit){
	iWebkit=window.onload=function(){
		function fullscreen(){
			var a=document.getElementsByTagName("a");
			for(var i=0;i<a.length;i++){
				if(a[i].className.match("noeffect")){
				}else{
					a[i].onclick=function(){
						window.location=this.getAttribute("href");
						return false
					}
				}
			}
		}
		function hideURLbar(){
			window.scrollTo(0,0.9)
		}
		iWebkit.init=function(){
			fullscreen();
			hideURLbar()
		};
		iWebkit.init()
	}
}
</script>
```
Dann sieht man, dass da sehr oft das Semicolon einfach weggelassen wurde. Dafür aber ans Ende der init Funktion ein Semicolon angehängt was meiner Meinung nach eigentlich falsch ist.

Ich würde das ganze so schreiben. Aber keine Gewähr dass es so besser funktioniert. Ein blick in die log Datei gäbe hier Aufschluss was genau für Fehler dort auftreten. Dass das ganze still und leise einfach nichts macht kann ich mir nicht vorstellen.


```
<script type="text/javascript">
var iWebkit;
if(!iWebkit){
	iWebkit=window.onload=function(){
		function fullscreen(){
			var a=document.getElementsByTagName("a");
			for(var i=0;i<a.length;i++){
				if(a[i].className.match("noeffect")){
				}else{
					a[i].onclick=function(){
						window.location=this.getAttribute("href");
						return false;
					}
				}
			}
		}
		function hideURLbar(){
			window.scrollTo(0,0.9);
		}
		iWebkit.init=function(){
			fullscreen();
			hideURLbar();
		}
		iWebkit.init();
	}
}
</script>
```


----------



## Daniel_Biber (10. Sep 2012)

Vielen Vielen Dank! Es hat geklappt  Tausend Dank hatte schon den ganzen Sonntag damit verbracht^^


----------



## kralo (7. Feb 2013)

Gibt es eigentlich die Möglichkeit mehre Klassen zu verwenden? 
Also .noeffect, .class1, .class2…
Wie müsste das Skript dann aussehen?


----------



## schlingel (8. Feb 2013)

Schon selbst auf die Lösung gekommen? Der Code den du da hast kann ja sehr leicht abgewandelt werden.


```
<script type="text/javascript">
var iWebkit;
var noEffectClasses = noEffectClasses || ['noeffect', 'class1', 'class2', 'etc.'];
if(!iWebkit){
	iWebkit=window.onload=function(){
		function fullscreen(){
			var a=document.getElementsByTagName("a");
			for(var i=0;i<a.length;i++){
                               var isForbiddenElem = false;

                                for(var e = 0; e < noEffectClasses.length; e++) {
                                  isForbiddenElem |= a[i].className.match(noEffectClasses[e]);
                                }

				if(isForbiddenElem){
				}else{
					a[i].onclick=function(){
						window.location=this.getAttribute("href");
						return false;
					}
				}
			}
		}
		function hideURLbar(){
			window.scrollTo(0,0.9);
		}
		iWebkit.init=function(){
			fullscreen();
			hideURLbar();
		}
		iWebkit.init();
	}
}
</script>
```


----------

