Dynamisch Skript auslesen
Eternius
- javascript
Hallo,
ich erstelle dynamisch ein Skript mit document.write('<script src="test.js" [..], kann ich mit javascript auch irgendwie auslesen, was der browser aus der test.js gelesen hat, oder zumindest mit dem DOM Inspector?
danke und gruss
Hi,
ich erstelle dynamisch ein Skript mit document.write('<script src="test.js" [..], kann ich mit javascript auch irgendwie auslesen, was der browser aus der test.js gelesen hat, oder zumindest mit dem DOM Inspector?
Die DOM-Methoden zum Auslesen des Elementinhalts sollten eigentlich auch für die script-Elemente funktionieren (hab's jetzt nicht getestet).
Einzig der Zugriff ist etwas kompliziert - da script kein id-Attribut hat, kann man nicht per getElementById drauf zugreifen, muß also mit anderen Methoden drauflangen (getElementsByTagName o.ä.).
cu,
Andreas
Hallo,
Die DOM-Methoden zum Auslesen des Elementinhalts sollten eigentlich auch für die script-Elemente funktionieren (hab's jetzt nicht getestet).
Einzig der Zugriff ist etwas kompliziert - da script kein id-Attribut hat, kann man nicht per getElementById drauf zugreifen, muß also mit anderen Methoden drauflangen (getElementsByTagName o.ä.).
hmm, danke, im DOM Inspector finde ich aber keine Value/Text Node wo der Inhalt der javascript Datei drinsteht (oder gibts da auch wiedern trick?), das ist eigentlich auch mein problem, die skript node kriege ich schon an den wickel.
Noch eine frage, wie kann ich aus diesem Array:
var bla=new Array();
bla["blub"]=5;
bla["blub"]=undefined;
for (i in bla)
{
alert(i);
}
den index blub entfernen (mir scheint gar nicht)?
gruss
Hi,
hmm, danke, im DOM Inspector finde ich aber keine Value/Text Node wo der Inhalt der javascript Datei drinsteht (oder gibts da auch wiedern trick?), das ist eigentlich auch mein problem, die skript node kriege ich schon an den wickel.
Ups, daß das ein externes Script ist, hab ich übersehen.
Noch eine frage, wie kann ich aus diesem Array:
den index blub entfernen (mir scheint gar nicht)?
Schon mit dem delete-Operator probiert?
cu,
Andreas
Hi,
danke, du weisst schon, wald und lauter bäume und so.
gruss
Tag Eternius.
im DOM Inspector finde ich aber keine Value/Text Node wo der Inhalt der javascript Datei drinsteht (oder gibts da auch wiedern trick?), das ist eigentlich auch mein problem, die skript node kriege ich schon an den wickel.
Ach so, du möchtest auf den _Inhalt_ der Script-Datei zugreifen, als wäre dieser Bestandteil des Dokumentenbaums, sehe ich das richtig? Darin sehe ich eigentlich keinen Sinn, grundsätzlich wäre aber sowas denkbar:
function neuesElement(vorfahre,elementtyp,beschriftung,id) {
var parElem = document.getElementById(vorfahre);
var neuElem = document.createElement(elementtyp);
var txtElem = document.createTextNode(beschriftung);
var attrib = document.createAttribute('id');
attrib.nodeValue = id;
neuElem.setAttributeNode(attrib);
neuElem.appendChild(txtElem);
parElem.appendChild(neuElem);
}
Rufst du das in deiner Hauptseite auf, kannst du selbstverständlich auf den neu erzeugten Knoten über dessen ID zugreifen. Ansonsten beschreibe dein Problem mal etwas genauer.
Siechfred
Hi,
Ach so, du möchtest auf den _Inhalt_ der Script-Datei zugreifen, als wäre dieser Bestandteil des Dokumentenbaums, sehe ich das richtig? Darin sehe ich eigentlich keinen Sinn, grundsätzlich wäre aber sowas denkbar:
function neuesElement(vorfahre,elementtyp,beschriftung,id) {
var parElem = document.getElementById(vorfahre);
var neuElem = document.createElement(elementtyp);
var txtElem = document.createTextNode(beschriftung);
var attrib = document.createAttribute('id');
attrib.nodeValue = id;
neuElem.setAttributeNode(attrib);
neuElem.appendChild(txtElem);
parElem.appendChild(neuElem);
}
Hm. Und welcher Teil Deines Scripts sorgt jetzt dafür, daß auf den Inhalt der per src-Attribut verlinkten Datei zugegriffen werden kann?
Diese ist ja eben nicht Textknoten im script-Element.
Was mir zu dem Thema noch einfällt:
ggf. könnte dieses xmlhttprequest-Zeug helfen (damit kann man auch Text-Dateien holen) - für die URL kann man ja das src-Attribut des script-Elements auslesen.
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://www.Mud-Guard.de/)
[Schreinerei Waechter](http://www.schreinerei-waechter.de/)
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Tag MudGuard.
Hm. Und welcher Teil Deines Scripts sorgt jetzt dafür, daß auf den Inhalt der per src-Attribut verlinkten Datei zugegriffen werden kann?
Das Script sollte eigentlich nur den einzigen m.E. sinnvollen Weg zeigen, wann der Inhalt der verlinkten Datei zu Elementen im DOM führen kann. Ansonsten sehe ich im Moment keinerlei Sinn in Eternius' Vorhaben. Oder ich habe ihn völlig falsch verstanden.
Ansonsten könnte auch sowas denkbar sein:
function getFunctionText(fName) {
if(typeof window[fName] != 'undefined') {
return window[fName];
}
else {
alert("Fehler");
return false;
}
}
Das geht auch, wenn die Funktion ausgelagert ist. Natürlich liefert die Funktion nur den Quelltext der Funktionen bzw. den Inhalt von im externen JS gespeicherten Variablen und der Name derselben muss bekannt sein. Möchte man den ganzen Text haben, könnte in der Tat XMLhttpRequest helfen:
var pfad = document.getElementsByTagName('script')[0].src;
var obj = getHttpObject();
obj.open("GET", pfad, true);
obj.onreadystatechange = function() {
if (obj.readyState == 4) {
alert(obj.responseText)
}
}
obj.send(null);
Der Code ist natürlich stark vereinfacht, funktioniert jedoch. Aber wie gesagt, ich sehe irgendwie noch nicht so ganz den Sinn der ganzen Operation.
Siechfred
Hallo,
Hm. Und welcher Teil Deines Scripts sorgt jetzt dafür, daß auf den Inhalt der per src-Attribut verlinkten Datei zugegriffen werden kann?
Das Script sollte eigentlich nur den einzigen m.E. sinnvollen Weg zeigen, wann der Inhalt der verlinkten Datei zu Elementen im DOM führen kann. Ansonsten sehe ich im Moment keinerlei Sinn in Eternius' Vorhaben. Oder ich habe ihn völlig falsch verstanden.
ich wollt halt per klick mir alles dumpen lassen, was der browser gerade an scripts/stylesheets/bilder etc verwendet. und bei js gerade deswegen, weil ich meine mein browser hat manchmal die angewohnheit gecachtes javascript zu verwenden und manchmal nicht.
gruss
Tag Eternius.
ich wollt halt per klick mir alles dumpen lassen, was der browser gerade an scripts/stylesheets/bilder etc verwendet.
Was der Browser an JS-Code verwendet, bekommst du nicht, nur das, was die aktuell geladene Seite kennt. Ich habe da mal eine kleine testseite geschrieben. Da werden natürlich die eingebauten Eigenschaften, Methoden und Objekte angezeigt, aber auch die individuell festgelegten (in meinem Fall die Funktionen neuesElement und getAll sowie die Variable testvar). Meintest du sowas in der Richtung?
Siechfred
Tag Eternius.
ich wollt halt per klick mir alles dumpen lassen, was der browser gerade an scripts/stylesheets/bilder etc verwendet.
Was der Browser an JS-Code verwendet, bekommst du nicht, nur das, was die aktuell geladene Seite kennt. Ich habe da mal eine kleine testseite geschrieben. Da werden natürlich die eingebauten Eigenschaften, Methoden und Objekte angezeigt, aber auch die individuell festgelegten (in meinem Fall die Funktionen neuesElement und getAll sowie die Variable testvar). Meintest du sowas in der Richtung?
genau sowas meinte ich (+ die geladenen ressourcen ;), vielen dank, muss schicken.
gruss
Holla,
genau sowas meinte ich (+ die geladenen ressourcen ;), vielen dank, muss schicken.
D'oh, heut ist nich mein Tag, ja das schickt auch, ich komm ja an die functions, und da steht der code drin.
gruss
Noch eine frage, wie kann ich aus diesem Array:
Laß dich nicht von den eckigen Klammern verwirren. Das ist kein Array, sondern ein Objekt, dem du die Eiegnschaft blub gibst.
var bla = new Object();
bla.blub = 5;
delete bla.blub
den index blub entfernen (mir scheint gar nicht)?
Deshalb steht auch da da es keine Array ist, du kannst auf solche Konstrukte kein Array Funktionen anwenden. sondern es ist ein Objekt, folglich
{link:http://de.selfhtml.org/javascript/sprache/operatoren.htm#delete]
Struppi.