zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden URL/Pfad von .js-Datei ermitteln

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 30.10.2013, 12:08
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard URL/Pfad von .js-Datei ermitteln

Hallo,
ich frage mich eben, ob es nicht eine Lösung für dieses Problem gibt, das ich bislang immer umständlichst umgangen habe:

Eine HTML-Seite bindet ein Script ein:
<SCRIPT type="text/javascript" src="../javascript/dasScript.js"></SCRIPT>

Die URL der html-Datei ist http://domain/Ordner/html/dieSeite.html.
Demnach ist die URL des Scriptes http://domain/Ordner/javascript/dasScript.js

Wie kann also eine Funktion in der dasScript.js diese letztere URL herausfinden?

Meine einzige Idee ist es, alle <SCRIPT>-Elemente der Seite zu durchsuchen und anhand des Namens der Datei (dasScript.js) den richtigen (relativen) Pfad zu finden. Aber das ist nicht wirklich handlich, schlägt feht, wenn jemand das Script umbenennt und man müsste den (relativen) Pfad, den man herausbekommt, umständlichst mit dem der html-Seite kombinieren, damit es funktioniert...

Geändert von MitjaStachowiak (30.10.2013 um 12:11 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 30.10.2013, 13:47
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

So sieht die Funktion aus, die ich dafür nutze:
Code:
// set base path of the framework
var path = (function(script, path) {
	script = script[script.length - 1];
	var idx = script.src.lastIndexOf('/');
	path = script.src.substring(0, idx + 1);
	return function() {return path;};
})(document.getElementsByTagName('script'));
alert(path());
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 30.10.2013, 17:08
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Aha, die Funktion zu starten, während das Script lädt, ist echt clever. So weiß man, dass das letzte <SCRIPT> im Dokument das richtige ist und das Script muss seinen eigenen Namen nicht kennen.

Ich nehme aber an, dass man so nur ein solches Script einbauen kann, da sonst die Variable path wieder und wieder überschrieben wird.

Außerdem stelle ich gerade fest, dass man mit scriptElement.src automatisch den absoluten Pfad bekommt. Ich habe eben mit getAttribute('src') und meiner absolutePath(rel,abs)-Funktion gearbeitet, die einen relativen und einen absoluten Pfad erwartet und den relativen Pfad in einen absoluten verwandelt. Aber die ist ziemlich komplex...

Für das Problem mit dem Variablennamen sehe ich jetzt keine Lösung. Ich denke, ich mache das so:
var ScriptPath_hduAIGFJdaaDGh = document.getElementsByTagName('script')[document.getElementsByTagName('script').length-1].src;

Den Namen der Variablen ScriptPath_*** muss man wohl oder übel für jedes Script ändern... Oder gibt es da doch einen Trick?

Auf jeden Fall Danke
Mit Zitat antworten
  #4 (permalink)  
Alt 31.10.2013, 10:43
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Aha, die Funktion zu starten, während das Script lädt, ist echt clever. So weiß man, dass das letzte <SCRIPT> im Dokument das richtige ist und das Script muss seinen eigenen Namen nicht kennen.

Ich nehme aber an, dass man so nur ein solches Script einbauen kann, da sonst die Variable path wieder und wieder überschrieben wird.
Du kannst so was natürlich so oft einbauen wie du willst. Ich nutze es in meinem Skript halt so, dass ich nur diesen Ort ermitteln möchte.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Außerdem stelle ich gerade fest, dass man mit scriptElement.src automatisch den absoluten Pfad bekommt. Ich habe eben mit getAttribute('src') und meiner absolutePath(rel,abs)-Funktion gearbeitet, die einen relativen und einen absoluten Pfad erwartet und den relativen Pfad in einen absoluten verwandelt. Aber die ist ziemlich komplex...
und unnötig, die get-/setAttribute() ermitteln das was im HTML Code stehen, während der Zugriff direkt auf die Attribute den Wert ermitteln, der tatsächlich benutzt wird. Daher sind diese Methoden i.d.R. nicht das was man möchte und ich rate auch vor deren Verwendung ab.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Für das Problem mit dem Variablennamen sehe ich jetzt keine Lösung. Ich denke, ich mache das so:
var ScriptPath_hduAIGFJdaaDGh = document.getElementsByTagName('script')[document.getElementsByTagName('script').length-1].src;

Den Namen der Variablen ScriptPath_*** muss man wohl oder übel für jedes Script ändern... Oder gibt es da doch einen Trick?
Kommt darau an was du möchtest. Es ist ja eher ungewöhnlich, dass jedes eingebundene Skript den Pfad Wissen muss woher es kommt. Aber so was liesse sich natürlich auch kapseln. Nur die Frage bleibt, warum?
Mit Zitat antworten
  #5 (permalink)  
Alt 31.10.2013, 10:56
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Nunja, ich möchte natürlich nicht, dass, wenn jemand zwei Script einbaut, die zufälliger Weise beide die gleiche Variable nutzen, dadurch ein Fehler kommt. Mit dem zufälligen Nahmen ist dieses Problem minimiert.

Dass man bei Scripts direkt .src verwenden kann, wusste ich bislang nicht. Ich hatte nämlich mal mit script.src = 'neuesScript.js' experimentiert. Das funktioniert nur im Internetexplorer. Aber das auslesen der src geht eben überall, deswegen kann man sich die komplizierte Interpretation von getAttribute('src') sparen.
Mit Zitat antworten
  #6 (permalink)  
Alt 31.10.2013, 11:09
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Nunja, ich möchte natürlich nicht, dass, wenn jemand zwei Script einbaut, die zufälliger Weise beide die gleiche Variable nutzen, dadurch ein Fehler kommt. Mit dem zufälligen Nahmen ist dieses Problem minimiert.
Wie gesagt, kapseln ist auch möglich, dann musst du dich nicht auf so halbherzige "Lösungen" verlassen. kapseln und die Vermeidung von globalen Variabeln ist eines der absoluten Grundlagen der Programmierung, dann musst du dir solche Fragen nicht stellen.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Dass man bei Scripts direkt .src verwenden kann, wusste ich bislang nicht. Ich hatte nämlich mal mit script.src = 'neuesScript.js' experimentiert. Das funktioniert nur im Internetexplorer.
Nein, das funktioniert auch in allen anderen Browsern.
Mit Zitat antworten
  #7 (permalink)  
Alt 31.10.2013, 12:12
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Und wie kann man das in dem Fall kapseln? Wie bekomme ich eine Funktion, die später aufgerufen wird, dazu, einen Wert auszugeben, der beim Laden des Scriptes bestimmt werden muss, wenn man diesen nicht in einer globalen Variablen speichert??

und ich habe es eben noch mal getestet: mit .src kann man (außer im IE) kein neues Script laden. Man kann es nur auslesen.

Geändert von MitjaStachowiak (31.10.2013 um 12:17 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 31.10.2013, 12:30
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Und wie kann man das in dem Fall kapseln? Wie bekomme ich eine Funktion, die später aufgerufen wird, dazu, einen Wert auszugeben, der beim Laden des Scriptes bestimmt werden muss, wenn man diesen nicht in einer globalen Variablen speichert??
In dem man die Funktion direkt aufruft.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
und ich habe es eben noch mal getestet: mit .src kann man (außer im IE) kein neues Script laden. Man kann es nur auslesen.
Ach du meinst bei einem bestehendem Skriptelement. Ja das schenit nicht zu funktionieren - üblich ist es mit createElement ein neues Script Element zu erzeugen, da geht das laden des Skripts auch mit .src
Mit Zitat antworten
Antwort

Stichwörter
.js pfad, findbin findscript, relativer pfad von .js, url des scriptes

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Server Externe .js Datei aufrufen. xXNemesisXx Javascript & Ajax 10 16.07.2009 17:05
Frage : Tempöräre Datei tichy Serveradministration und serverseitige Scripte 3 16.06.2009 13:52
html Befehle in einer txt Datei? Magellan (X)HTML 19 05.06.2008 19:39
.js Datei von einer Webgalerie ändern Lili0312 Javascript & Ajax 5 23.08.2006 14:53
[php/http] datei an client senden Xenon Serveradministration und serverseitige Scripte 13 21.03.2005 21:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:50 Uhr.