Probleme bei Zusammenspiel Javascript/Ajax und JSP - nicht wohl geformt - Encoding?

Herr_M

Erfahrenes Mitglied
Hallo zusammen,
Habe ein kleine Problem mit der Zusammenarbeit von Javascript/Ajax und JSP...

Folgendes Szenario

Habe eine JSP Datei kartenanzeige.jsp die in eine anderen jsp mit
HTML:
<jsp:include page="/WEB-INF/views/kartenanzeige.jsp" flush="true" />
einbegunden wird, beide JSP Dateien sind UTF-8
HTML:
<%@ page buffer="0kb" contentType="text/html;charset=UTF-8" %>

In der kartenanzeige.jsp

Ist Javascript/Ajax Code enthalten (hier mal nur der fragliche Ausschnitt)

HTML:
<script type="text/javascript" charset="utf-8">
...
function loadMapGadget()
	{
		containerDiv = document.getElementById('container');
		mapDiv = $("#map").get(0); //document.getElementById('map');

		mapDiv.onclick = function (e)
		{
			clickedX = (window.event && window.event.offsetX) || e.clientX;
			clickedY = (window.event && window.event.offsetY) || e.clientY;
		};

		mapDiv.style.cursor = 'pointer';
  
		loadScript();
	}

...

Firebug im Firefox beschwert sich, dass die "window.event && window.event.offsetX" angeblich "nicht wohl geformt" ist, und markiert die beiden "&&" ich nehme an
dass FF versucht die beiden "&&" wohl als HTML encodierte Sonderzeichen auszulesen und
etwas erwartet wie "&uuml;" oder ähnliches, was hier natürlich nicht der Fall ist weils ja
eine logische Verknüpfung darstellt...

Im Firefox funktioniert das Skript scheinbar trotzdem, auch wenn zum Teil an anderer Stelle Fehler auftreten (die vermutlich mit diesem Zusammehängen), im Internet Explorer
versagt das Skript komplett seinen Dienst und wirft nur eine Fehlermeldung in der auf eine Zeile in deiner unbekannten Datei verwiesen wird... wobei die Zeilennummer in astronomische Bereiche gelangt (jenseist der 10 Mio****?).

Hat jemand ne Idee wie ich diese beiden "&&" einbauen muss damit es klappt? Maskieren oder encodiert vielleicht? Hab schon XML UTF codiert eingebaut also "&#x0026" hat aber nix gebracht, da isser dann über das # gestolpert und hat das als unbekannt angemeckert... hmm...
 
Du musst das Javascript folgendermaßen umschließen.

HTML:
<script type="text/javascript" charset="utf-8">
/* <![CDATA[ */
function loadMapGadget()
	{
		containerDiv = document.getElementById('container');
		mapDiv = $("#map").get(0); //document.getElementById('map');

		mapDiv.onclick = function (e)
		{
			clickedX = (window.event && window.event.offsetX) || e.clientX;
			clickedY = (window.event && window.event.offsetY) || e.clientY;
		};

		mapDiv.style.cursor = 'pointer';
  
		loadScript();
	}
/* ]]> */
<script>

Mehr Infos: http://en.wikipedia.org/wiki/CDATA
 
Cool Danke!
Es funktioniert, naja jedenfalls ist der Fehler jetzt weg dafür sind ein paar andere aufgetaucht :)
Auf die Idee das ich das Script hier als CDATA Element einbinden muss, wär ich im Leben nicht gekommen... obwohls im Nachhinein eigentlich logisch erscheint...
 

Neue Beiträge

Zurück