nam: Lösung gefunden

Beitrag lesen

Jipeee!
Ich hab's gefunden!

Die Einbindung danach funktioniert nicht (nur wenn ich den xhr davor auskommentiere).

Das Problem war offenbar der Cache in Opera. Wahrscheinlich wird da der HEAD-Request im Cache gespeichert - natürlich ohne Inhalte - und Opera versucht dann danach wieder auf den Cache zuzugreifen und das Script von da zu laden. Da aber keine Inhalte da sind, gehts nicht.

Wenn ich im XMLHttpRequest auf no-cache schalte klappts.

function loadScript(url) {  
	//check if 'url' is available:  
	var xhr = null;  
	function processReqChange() {  
		if (window.opera) { opera.postError(xhr.readyState); }  
		// only if req shows "loaded"  
		if (xhr.readyState == 4) {  
			if (window.opera) { opera.postError(xhr.getAllResponseHeaders()); }  
			if (window.opera) { opera.postError(xhr.status); }  
			// only if "OK"  
			if (xhr.status == 200) {  
				var head = document.getElementsByTagName('head').item(0);  
				var script = document.createElement('script');  
				script.src = url;  
				script.type = 'text/javascript';  
				head.appendChild(script);  
			} else {  
				alert("There was a problem retrieving the XML data:\n" +  
					xhr.statusText);  
			}  
		}  
	}  
	if (typeof XMLHttpRequest != 'undefined') {  
		xhr = new XMLHttpRequest();  
	}  
	if (!xhr) {  
		try {  
			xhr  = new ActiveXObject("Msxml2.XMLHTTP");  
		} catch(e) {  
			xhr  = null;  
		}  
	}  
	if (xhr) {  
		xhr.onreadystatechange = processReqChange;  
		xhr.open('HEAD', url, true);  
		xhr.setRequestHeader('Cache-Control','no-cache');  
		xhr.send(null);  
	}  
}  
loadScript('script1.js');

Siehe hier: http://mnn.ch/diversa/opera/opera_fix.html

Gruss,
Mathias