Goedenavond,
Nu weet ik dat er eigenlijk geen support geleverd wordt op gedownloade scripts.
Ik hoop dat het in dit geval anders ligt.
Ik post al langer op t.net vandaar dat ik eerder geneigd ben hier te posten dan ergens anders
Het onderstaande script heb ik van dynamic drive en is een eenvoudig script dat losse pagina's dmv javascript laad en in een DIVje plaatst.
Nu weet ik persoonlijk weinig van javascript en heb ik het script gedownload om uit te vinden hoe het werkt en hier wat van te leren.
Puur educatief dus zal ik maar zeggen, want ik wil erg graag wat meer leren over Javascript.
Over het algemeen ben ik er redelijk achter hoe het werkt.
Alleen één ding is mij totaal niet duidelijk.
Het script werkt namelijk als volgt :
Je hebt een link, in die link roep je een javascript aan en daarin het bronbestand en de target div.
Dit werkt allemaal prima. Zodra je op het linkje klikt wordt de content uit bronbestand.htm geladen in de targetdiv.
Als ik een andere layer wil kiezen om het bronbestand.htm in te tonen hoef ik slechts als target een andere DIV id op te geven.
Werkt ook prima.
Maar nu is er echter een probleem.
Er zit ook een functie in het script om een CSS toe te passen op het bestand dat geladen wordt.
Deze werkt prima als je de naam van het target DIV ongewijzigd laat.
Echter zodra je de DIV een andere naam geeft werkt het laden van de content erin nog wel prima.
Maar het CSS werkt totaal niet.
En ik kan nergens in het javascript vinden waarom het nou niet anders zou werken
Zoals je ziet wordt doormiddel van de link op regel 82
De javascript functie ajaxpage geladen en die de waarde doorgegeven ajaxfiles/external2.htm en rightcolumn.
De tekst in het bronbestand van external2.htm zal vervolgens door de functie worden uitgespuugd in het divje rightcolumn op regel 90
Hetzelfde geld voor de link op regel 86
Deze roept de functie loadobjs aan en laad de waarden ajaxfiles/style.css en ajaxfiles/tooltip.js.
Deze verzorgt er volgens voor dat het CSS bestand ajaxfiles/style.css toegepast word op de layer rightcolumn.
Het vreemde hieraan vind ik echter dat er nergens opgegeven wordt dat hij het stylesheet toepast op de div "rightcolumn".
Of tenminste ik zie niet waar het wordt opgegeven.
Want zodra ik de naam van de target layer wijzig werkt gelijk de functie loadobjs niet meer en wordt het stylesheet niet meer toegepast.
Ziet iemand misschien waar dit opgegeven wordt?
In ieder geval TIAD
Nu weet ik dat er eigenlijk geen support geleverd wordt op gedownloade scripts.
Ik hoop dat het in dit geval anders ligt.
Ik post al langer op t.net vandaar dat ik eerder geneigd ben hier te posten dan ergens anders
Het onderstaande script heb ik van dynamic drive en is een eenvoudig script dat losse pagina's dmv javascript laad en in een DIVje plaatst.
Nu weet ik persoonlijk weinig van javascript en heb ik het script gedownload om uit te vinden hoe het werkt en hier wat van te leren.
Puur educatief dus zal ik maar zeggen, want ik wil erg graag wat meer leren over Javascript.
Over het algemeen ben ik er redelijk achter hoe het werkt.
Alleen één ding is mij totaal niet duidelijk.
Het script werkt namelijk als volgt :
Je hebt een link, in die link roep je een javascript aan en daarin het bronbestand en de target div.
code:
1
| <a href="javascript:ajaxpage('bronbestand.htm', 'targetdiv');">klik</a> |
Dit werkt allemaal prima. Zodra je op het linkje klikt wordt de content uit bronbestand.htm geladen in de targetdiv.
Als ik een andere layer wil kiezen om het bronbestand.htm in te tonen hoef ik slechts als target een andere DIV id op te geven.
Werkt ook prima.
Maar nu is er echter een probleem.
Er zit ook een functie in het script om een CSS toe te passen op het bestand dat geladen wordt.
Deze werkt prima als je de naam van het target DIV ongewijzigd laat.
Echter zodra je de DIV een andere naam geeft werkt het laden van de content erin nog wel prima.
Maar het CSS werkt totaal niet.
En ik kan nergens in het javascript vinden waarom het nou niet anders zou werken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
| <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>fiets</title>
<script type="text/javascript">
/***********************************************
* Dynamic Ajax Content- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""
function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}
function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}
function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}
</script>
</head>
<body>
<div id="leftcolumn">
<a href="javascript:ajaxpage('ajaxfiles/external2.htm', 'rightcolumn');">Ferrari Page</a>
<a href="javascript:ajaxpage('ajaxfiles/external3.htm', 'rightcolumn');">Aston Martin Page</a>
<div style="margin-top: 2em">Load CSS & JS files</div>
<a href="javascript:loadobjs('ajaxfiles/style.css', 'ajaxfiles/tooltip.js');">Load "style.css" and "tooltip.js"</a>
</div>
<div id="rightcolumn"><h3>Choose a page to load.</h3></div>
<div style="clear: left; margin-bottom: 1em"></div>
</body>
</html> |
Zoals je ziet wordt doormiddel van de link op regel 82
code:
1
| <a href="javascript:ajaxpage('ajaxfiles/external2.htm', 'rightcolumn');">Ferrari Page</a> |
De javascript functie ajaxpage geladen en die de waarde doorgegeven ajaxfiles/external2.htm en rightcolumn.
De tekst in het bronbestand van external2.htm zal vervolgens door de functie worden uitgespuugd in het divje rightcolumn op regel 90
code:
1
| <div id="rightcolumn"><h3>Choose a page to load.</h3></div> |
Hetzelfde geld voor de link op regel 86
code:
1
| <a href="javascript:loadobjs('ajaxfiles/style.css', 'ajaxfiles/tooltip.js');">Load "style.css" and "tooltip.js"</a> |
Deze roept de functie loadobjs aan en laad de waarden ajaxfiles/style.css en ajaxfiles/tooltip.js.
Deze verzorgt er volgens voor dat het CSS bestand ajaxfiles/style.css toegepast word op de layer rightcolumn.
Het vreemde hieraan vind ik echter dat er nergens opgegeven wordt dat hij het stylesheet toepast op de div "rightcolumn".
Of tenminste ik zie niet waar het wordt opgegeven.
Want zodra ik de naam van de target layer wijzig werkt gelijk de functie loadobjs niet meer en wordt het stylesheet niet meer toegepast.
Ziet iemand misschien waar dit opgegeven wordt?
In ieder geval TIAD