Hi Leute.

Habe mal ein bißchen gebastelt, da ich gerne etwas Struktur in meine Javascript bekommen wollte.

Als alter Pascal-Hase, war ich auf der Suche nach eine "uses" - Klausel für die Verwendung mehrere Javascripte.
Sicherlich ist es kein Problem zu schreiben:
<SCRIPT src="test1.js" type="text/javascript"></script>
<SCRIPT src="test2.js" type="text/javascript"></script>
<SCRIPT src="test3.js" type="text/javascript"></script>
etc.

Aber wenn ich Abhängigkeiten in den einzelnen Scripten habe, kann es schon mal unübersichtlich werden. Was ist dann, wenn innerhalb eines Scriptes die Funktion aus einem anderen Script verwendet werden soll?
Was ist gar, wenn Zyklen auftreten?
Script1 verwendet eine Funktion von Script3, Script3 eine von Script2 und Script2 eine von Script1?

Langer Rede kurzer Sinn. Hier ist meine Lösung (nur eine mögliche)

Hoffe sie nützt außer mir noch jemandem:
(Listings: test.html, test1.js, test2.js, test3.js und test4,js)

vop



test.html:

<html>
<head>
<SCRIPT src="test2.js" type="text/javascript"></script>
</head>
<body>
<input type="button" onClick="TesteObEsGeht();return false" value="Test1">
<input type="button" onClick="Test2();return false" value="Test2">
<input type="button" onClick="Test3();return false" value="Test3">
<input type="button" onClick="Test4();return false" value="Test4">
</body>
</html>

test1.js:

// Diese Variable verhindert das mehrfache Einbinden dieser Datei (test1.js)
var def___test1=true;

// Im folgenden try-catch-Block wird geprüft, ob die Variable def___test3 bereits definiert ist, indem einfach
// eine Zuweisung durchgeführt wird.
// Existiert nämlich def___test3 noch gar nicht, wird eine Exception ausgelöst, die dann dafür sorgt, dass
// test3.js eingebunden wird.
try
{
dummy = def___test3;
}
catch(e)
{
document.write('<SCRIPT src="test3.js" type="text/javascript"></script>');
};


function Test1()
{
return "Geht wohl:";
};

test2.js
// Diese Variable verhindert das mehrfache Einbinden dieser Datei (test2.js)
var def___test2=true;

// Im folgenden try-catch-Block wird geprüft, ob die Variable def___test1 bereits definiert ist, indem einfach
// eine Zuweisung durchgeführt wird.
// Existiert nämlich def___test1 noch gar nicht, wird eine Exception ausgelöst, die dann dafür sorgt, dass
// test1.js eingebunden wird.
try
{
dummy = def___test1;
}
catch(e)
{
document.write('<SCRIPT src="test1.js" type="text/javascript"></script>');
};


function TesteObEsGeht()
{
alert( Test1());
};

function Test2()
{
alert("Test 2 geht auch");
};


test3.js:

// Diese Variable verhindert das mehrfache Einbinden dieser Datei (test3.js)
var def___test3=true;

// Im folgenden try-catch-Block wird geprüft, ob die Variable def___test4 bereits definiert ist, indem einfach
// eine Zuweisung durchgeführt wird.
// Existiert nämlich def___test4 noch gar nicht, wird eine Exception ausgelöst, die dann dafür sorgt, dass
// test4.js eingebunden wird.
try
{
dummy = def___test4;
}
catch(e)
{
document.write('<SCRIPT src="test4.js" type="text/javascript"></script>');
};

function Test3()
{
alert( Test4() + " von Test 3");
};


test4.js:
// Diese Variable verhindert das mehrfache Einbinden dieser Datei (test4.js)
var def___test4=true;

// Im folgenden try-catch-Block wird geprüft, ob die Variable def___test1 bereits definiert ist, indem einfach
// eine Zuweisung durchgeführt wird.
// Existiert nämlich def___test1 noch gar nicht, wird eine Exception ausgelöst, die dann dafür sorgt, dass
// test1.js eingebunden wird.
try
{
dummy = def___test1;
}
catch(e)
{
document.write('<SCRIPT src="test1.js" type="text/javascript"></script>');
};

function Test4()
{
alert( Test1()+ " Test 4");
return "Test 4 wurde verwendet";
};