HighDots Forums  

JavaScript ausführen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss JavaScript ausführen in the Javascript (German) forum.

Reply
 
Thread Tools Display Modes
  #1  
Old   
Richard Konrad
 
Posts: n/a

Default JavaScript ausführen - 09-22-2006 , 03:29 AM






Hallo NG!

Wenn in einem HTML-Document ein Stück Javascript vorkommt, wird dieses an
der entsprechenden Stelle auch ausgeführt.
Ladet man dem HTML-Code via XMLHTTPRequest, und steckt diesen via innerHTML
in einen Knoten, wird der Code nicht ausgeführt.

Wißt ihr, ob das so gewollt ist?

Danke!
RK



Reply With Quote
  #2  
Old   
hias
 
Posts: n/a

Default Re: JavaScript ausführen - 09-22-2006 , 03:49 AM






Richard Konrad schrieb:
Quote:
Hallo NG!
Hallo, Richard!


Quote:
Wenn in einem HTML-Document ein Stück Javascript vorkommt, wird dieses an
der entsprechenden Stelle auch ausgeführt.
Wenn du html Übermittelst, wird das als text/plain oder text/xml
übermittelt. Das bedeutet, dein Code wird verschlüsselt (z.B & zu &amp

Quote:
Ladet man dem HTML-Code via XMLHTTPRequest, und steckt diesen via innerHTML
in einen Knoten, wird der Code nicht ausgeführt.

Wißt ihr, ob das so gewollt ist?
Danke!
RK
Ich hatte dasselbe Problem und habe mir XML zurückgeben lassen.
Du musst nur per JS dann den code erzeugen.

Hias


Reply With Quote
  #3  
Old   
Ralf Beutler
 
Posts: n/a

Default Re: JavaScript ausführen - 09-22-2006 , 05:27 AM



hias schrieb:
^^^^
Leg dir bitte einen vernünftigen Namen zu.

Quote:
Richard Konrad schrieb:

Wenn in einem HTML-Document ein Stück Javascript vorkommt, wird dieses an
der entsprechenden Stelle auch ausgeführt.

Wenn du html Übermittelst, wird das als text/plain oder text/xml
übermittelt.
Im Normalfall wird vom Server
Content-Type: text/html
gesetzt.
So der Browser damit umgehen kann, kann man ihm auch
application/xhtml+xml
liefern, wenn es sich um XHTML Dokumente handelt.

Quote:
Das bedeutet, dein Code wird verschlüsselt (z.B & zu &amp
Was ist das denn für ein Quatsch? Du solltest dich mal über die
Bedeutung des Wortes "verschlüsseln" informieren gehen.

Quote:
Ladet man dem HTML-Code via XMLHTTPRequest, und steckt diesen via innerHTML
in einen Knoten, wird der Code nicht ausgeführt.

Wißt ihr, ob das so gewollt ist?
Auf jeden Fall ist es so.

Quote:
Ich hatte dasselbe Problem und habe mir XML zurückgeben lassen.
Du musst nur per JS dann den code erzeugen.
Dann kannst also nur rausfinden, wo ein script Element ist und dessen
Inhalt über eval() evaluieren lassen.
Im Mozilla hat es bei über eine XSL-Transformation funktioniert, im IE
habe ich es nicht hinbekommen, dort habe ich es dann so gemacht:

var who = document.getElementById(this._layer);
if( this._isActiveX ){
var html = this._transform(); // perform XSL Trafo
who.innerHTML = html;
var Ausdruck = /<script[^>]*>((.|\n)*)<\/script>/ig;
Ausdruck.exec(html);
var js = RegExp.$1;
if(js && js.length > 0){
window.eval(js);
}
} else {
who.innerHTML = '';
who.appendChild(this._transform());
}

Aber der Code ist schon ein paar Jahre alt und inzwischen sicherlich
durch Frameworks abgedeckt.

br | rb
--
Sie freuten sich riesig, wenn eine Maschine nach sechs Stunden etwas
fertig brachte, wozu jeder Mensch auf der Straße für 2 Cent fähig
gewesen wäre. Anschließend ließen sie sich Bananen- und Sushi-Pizza
kommen und schliefen vor der Tastatur ein. [aus T.P., Heiße Hüpfer]


Reply With Quote
  #4  
Old   
Martin Honnen
 
Posts: n/a

Default Re: JavaScript ausführen - 09-22-2006 , 09:25 AM





Richard Konrad wrote:

Quote:
Wenn in einem HTML-Document ein Stück Javascript vorkommt, wird dieses an
der entsprechenden Stelle auch ausgeführt.
Ladet man dem HTML-Code via XMLHTTPRequest, und steckt diesen via innerHTML
in einen Knoten, wird der Code nicht ausgeführt.

Wißt ihr, ob das so gewollt ist?
IE verlangt (sogar laut Doku)
<http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/innerhtml.asp>
dass man
<script type="text/javascript" defer>
verwendet, wenn man will, dass beim Setzen von innerHTML (oder auch bei
Benutzung von insertAdjacentHTML) der Script-Code in enthaltenen
script-Elementen ausgefuehrt wird:
"When using innerHTML to insert script, you must include the DEFER
attribute in the script element."

Andere Browser haben zwar gewisse Anstrengungen unternommen, innerHTML
zu unterstuetzen, aber das Ausfuehren von Script beim Setzen von
innerHTML funktioniert meines Wissens zur Zeit weder in Mozilla noch in
Opera.

Es gibt allerdings, je nach Anforderung einfache Wege, das zu umgehen,
z.b. kann man innerHTML fuer ein zur Zeit nicht im Dokument befindliches
Element setzen und dieses dann per W3C DOM (also appendChild,
replaceChild) ins Dokument einfuegen, dann klappt das mit der
Script-Ausfuehrung besser. Das eignet sich gut, wenn man z.b. bei
Benutzung von XMLHttpRequest ein Container-Element wie ein div-Element
hat, das nur dazu dient, das empfangene HTML-Schipsel aufzunehmen, also

<div id="div1"></div>

und im Script dann statt z.b.

var div = document.getElementById('div1');
div.innerHTML = someXMLHttpRequestInstance.responseText;

besser

var div = document.getElementById('div1');
var newDiv = div.cloneNode(false);
newDiv.innerHTML = someXMLHttpRequestInstance.responseText;
div.parentNode.replaceChild(newDiv, div);

IE braucht aber auch dafuer <script type="text/javascript" defer>.

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.