AJAX (Asynchronous JavaScripting and XML) Forum
   Forum über „Asynchronous JavaScripting and XML“ und Web 2.0    AJAX Forum AJAX Blog AJAX Wiki AJAX Bücher

Zurück   AJAX (Asynchronous JavaScripting and XML) Forum > Für Entwickler > Lösungen


Digitalkamera
Antwort
 
LinkBack Themen-Optionen
Alt 24.08.2008, 19:26   #11 (permalink)
Benutzer
 
Registriert seit: 26.04.2007
Beiträge: 37
Standard

hallo
ich benutze euer evalscript, es funzt prima mit mozilla WIN & MAC & Safari!
leider spuckt mir der IE (v6) einen error aus "object error"
hier rufe ich das evalscript auf
PHP-Code:
function loadpage(page_requestcontainerid){
if (
page_request.readyState == && (page_request.status==200 || window.location.href.indexOf("http")==-1))
 var 
answer page_request.responseText;
     if (
document.getElementById(containerid).innerHTML != answer){
                
document.getElementById(containerid).innerHTML answer;
                
evalScript(page_request.responseText);
     } else{
                
document.getElementById(containerid).innerHTML "";
     }

ich hab irgendwo gelesen das der IE <SCRIPT></SCRIPT> versal braucht?
hans_wurst ist offline   Mit Zitat antworten
Alt 24.08.2008, 20:00   #12 (permalink)
Benutzer
 
Registriert seit: 26.04.2007
Beiträge: 37
Standard

sorry war etwas voreilig, hatte aber vorher den ganzen nachmittag nach ner lösung gesucht

bin gerade jetzt auf ein posting gestossen, es liegt am "page_request.readyState == 4"

der IE ist da scheinbar zickig!
hab nun die page_request abfrage anders gemacht & jetzt funzt auch im IE
(hoffentlich kann ich jemanden, mit dem selben problem damit helfen)
hans_wurst ist offline   Mit Zitat antworten
Alt 22.05.2009, 15:57   #13 (permalink)
Neuer Benutzer
 
Registriert seit: 20.05.2009
Beiträge: 6
Standard

Zitat:
Zitat von cas Beitrag anzeigen
Hey

binde diese funktion in dein JS ein.

HTML-Code:
function evalScript(scripts)
{	try
	{	if(scripts != '')	
		{	var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
	       	                         if (scripts !== null) script += arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	alert(e)
	}
}
Und über den paramter scripts lädst du dein ganzen Response Text darein.
Sorry...
Aber WIE reinladen????

Mein Link sieht derzeit so aus:
HTML-Code:
<a href="javascript:load('funny_stuff/video_01/index.html', 'content_funnystuff');" class="link1a">Video_01</a>
Wie muss ich denn jetzt nun "scripts" zum mitladen bringen? ich bitte sehr um Hilfe...
Testikel ist offline   Mit Zitat antworten
Alt 14.06.2009, 23:11   #14 (permalink)
Neuer Benutzer
 
Registriert seit: 14.05.2009
Beiträge: 27
Standard

hoffentlich kommt die Antwort nicht zuspät.
Code:
if(request.status==200 || request.status == 304)
		{
		onSuccess(request.responseText, request.responseXML);
		evalScript(request.responseText);
		}
Hans_james ist offline   Mit Zitat antworten
Alt 14.06.2009, 23:14   #15 (permalink)
Neuer Benutzer
 
Registriert seit: 14.05.2009
Beiträge: 27
Standard

Ein frage an die Experten, ich benutze die funktion auch, kann mir vielleicht einer erklären was diese funktion macht ???

function evalScript(scripts)
{ try
{ if(scripts != '')
{ var script = "";
scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
if (scripts !== null) script += arguments[1] + '\n';
return '';});
if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
}
return false;
}
catch(e)
{ alert(e)
}
}

gruß

Hans
Hans_james ist offline   Mit Zitat antworten
Alt 15.06.2009, 09:21   #16 (permalink)
cas
Erfahrener Benutzer
 
Benutzerbild von cas
 
Registriert seit: 21.11.2006
Ort: Velbert
Beiträge: 1.429
Standard

Hey,
diese funktion sucht in dem Response bzw in dem String den man der Funktion übergeben hat nach den <script> Tags und führt den Code der da zwischen liegt aus. Da Der Browser JavaScripts die via Ajax geladen werden nicht als Code sondern als String erkennt muss dieser ausgeführt werden und das macht diese Funktion.

HTML-Code:
function evalScript(scripts)
{	try
	{	if(scripts != '')	
		{	var script = "";
			/*
			 * <script[^>]*> sucht alle <script ...> Tags
			 * ([\s\S]*?) liefert alles was zwichen den Tags steht zurück
			 * <\/script> sucht alle </script> Tags
			 */ 
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
				//Dies ist wie eine Art Schleife je nachdem wie oft Script Tags mit Code vorkommen daher wird es in der Variable "script" abgelegt
				if (scripts !== null) 
					script += arguments[1] + '\n'; //Packt den Code an der Variable 
 	        		return '';
	            	});
	            	//Hier wird der String der nur noch Code enthalten sollte ausgeführt
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	alert(e)
	}
}
Man beachte dabei das diese Funktion lediglich Code der zwischen den Script Tags ausführt und keine Externen javaScripte neu lädt.

Mit freundlichen Grüßen

Cas
__________________
Erster Erster.

Geändert von cas (07.07.2009 um 10:50 Uhr)
cas ist offline   Mit Zitat antworten
Alt 22.11.2009, 14:09   #17 (permalink)
Neuer Benutzer
 
Registriert seit: 21.11.2009
Beiträge: 20
Standard

Zitat:
Zitat von cas Beitrag anzeigen
Hey

binde diese funktion in dein JS ein.

HTML-Code:
function evalScript(scripts)
{	try
	{	if(scripts != '')	
		{	var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
	       	                         if (scripts !== null) script += arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	alert(e)
	}
}
Und über den paramter scripts lädst du dein ganzen Response Text darein.

Und das nächste mal suchen dieses Thema wurde schon 1000x besprochen und erläautert etc.

eval funkt auch als zwischen info.

Mit freundlichen Grüßen

Cas

Aber wo soll die Funktion eingebunden werden? Und was ist mit "Und über den paramter scripts lädst du dein ganzen Response Text darein." gemeint?

Gruß,
Quert
Quert ist offline   Mit Zitat antworten
Alt 23.11.2009, 00:27   #18 (permalink)
Erfahrener Benutzer
 
Registriert seit: 08.09.2007
Ort: Nordsee
Beiträge: 190
Sphinx eine Nachricht über ICQ schicken Sphinx eine Nachricht über AIM schicken Sphinx eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von Quert Beitrag anzeigen
Aber wo soll die Funktion eingebunden werden?
Die Funktion kann im gesamten Quelltext der Homepage eingebunden werden von wo aus die Ajax Funktion gestartet wird.

Zitat:
Zitat von Quert Beitrag anzeigen
Und was ist mit "Und über den paramter scripts lädst du dein ganzen Response Text darein." gemeint?
Heißt, der Inhalt der durch "Ajax" übergeben worden ist und als Rückgabe Wert in einer Variable existiert inclusive Javascript Quelltext wird an die Funktion evalScript(scripts) weitergegeben...

Code:
//Dein Ajax-Request als Beispiel... 
...

evalScript(request.responseText);
...

Geändert von Sphinx (23.11.2009 um 00:30 Uhr)
Sphinx ist offline   Mit Zitat antworten
Alt 23.11.2009, 17:23   #19 (permalink)
Neuer Benutzer
 
Registriert seit: 21.11.2009
Beiträge: 20
Standard

Okay, vielen Dank, ich habs hinbekommen.
Quert ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
komischer funktionsaufruf ragtek JavaScript 4 30.09.2007 16:22
javscript onLoad über AJAX nicht möglich? conym18 JavaScript 1 18.07.2007 17:42
Funktionsaufruf mit Parameterübergabe mit <a href=""> Scherzkeks Sonstige Probleme 4 16.02.2007 08:44
javscript 2.0? sergej JavaScript 0 13.07.2006 23:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.