[AJAX] laden gaat fout in IE7
Ik ben net begonnen met het uitproberen om een ajax pagina in te laden op een website.
Ik heb wat codes gezocht en een beetje aangepast. In Firefox werkt de code zoals hij moet werken en dar ben ik erg blij mee. Alleen in, het altijd vage, Internet Explorer werkt het weereens niet.
Zouden jullie mij misschien kunnen wijzen op de fout die ik maak?
Volgens ie zit de fout op deze plek:
Regel: 65
teken: 3
foutmelding: Object vereist
Dit is mijn hele html:
Code (php)
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
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax opzet</title>
<link rel="stylesheet" type="text/css" href="Include/style.css" />
<script type="text/javascript" src="Include/ajax.js"></script>
<script type="text/javascript" src="Include/hashlistener.js"></script>
</head>
<!--<body onload="herladen('0', 'rechts');">-->
<body>
<div id="container">
<div id="header">
<script type="text/javascript">
document.write("<p>Loaded at: " + new Date + "<br>Hash: " + document.location.hash + "<\/p>");
</script>
<pre>onHashChange: <span id="out"></span></pre>
<script type="text/javascript">
function setHash(naam) {
hashListener.setHash(naam);
}
</script>
<a href="#anchor">anchor</a>
</div>
<div id="links">
<a href="javascript:ajaxpage('home.html','content_1');">Home in "Content box 1"</a><br />
<a href="javascript:ajaxpage('andere_pagina.php','content_2');">Andere pagina in "Content box 2"</a><br /><br />
<a href="javascript:ajaxpage('home.html','content_2');">Home in "Content box 2"</a><br />
<a href="javascript:ajaxpage('andere_pagina.php','content_1');">Andere pagina in "Content box 1"</a>
</div>
<div id="rechts">
<div id="content_1"><center><h5>Content box 1</h5></center></div>
<div id="content_2"><center><h5>Content box 2</h5></center></div>
</div>
<div class="clear"> </div>
<div id="footer"><center><h5>Footer</h5></center></div>
</div>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax opzet</title>
<link rel="stylesheet" type="text/css" href="Include/style.css" />
<script type="text/javascript" src="Include/ajax.js"></script>
<script type="text/javascript" src="Include/hashlistener.js"></script>
</head>
<!--<body onload="herladen('0', 'rechts');">-->
<body>
<div id="container">
<div id="header">
<script type="text/javascript">
document.write("<p>Loaded at: " + new Date + "<br>Hash: " + document.location.hash + "<\/p>");
</script>
<pre>onHashChange: <span id="out"></span></pre>
<script type="text/javascript">
function setHash(naam) {
hashListener.setHash(naam);
}
</script>
<a href="#anchor">anchor</a>
</div>
<div id="links">
<a href="javascript:ajaxpage('home.html','content_1');">Home in "Content box 1"</a><br />
<a href="javascript:ajaxpage('andere_pagina.php','content_2');">Andere pagina in "Content box 2"</a><br /><br />
<a href="javascript:ajaxpage('home.html','content_2');">Home in "Content box 2"</a><br />
<a href="javascript:ajaxpage('andere_pagina.php','content_1');">Andere pagina in "Content box 1"</a>
</div>
<div id="rechts">
<div id="content_1"><center><h5>Content box 1</h5></center></div>
<div id="content_2"><center><h5>Content box 2</h5></center></div>
</div>
<div class="clear"> </div>
<div id="footer"><center><h5>Footer</h5></center></div>
</div>
</body>
</html>
Het vreemde vind ik dat deze code nieteens tot regel 65 gaat. Wie kan mij helpen?
Gewijzigd op 01/01/1970 01:00:00 door Michel de Groot
deze regels in het bestand moet je erbij optellen.
IE maakt er 1 lang bestand van, en je zult in je gewone html moeten binnen met tellen en dan doortellen in het js-bestand
edit: ik raad je aan een framework te gebruiken, bijv MooTools omdat die crossbrowser is en verder kijkt dan alleen firefox en internet explorer
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
Ik heb nu de code van de javascripts include gewoon in de pagina geplakt en nog een keer de pagina gestart in IE.
IE geeft nu aan dat de fout zit in regel 133 teken 3 en dat is nu op de pagina dit stukje:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
writeFrame: function (s) {
var f = document.getElementById("state-frame");
var d = f.contentDocument || f.contentWindow.document;
d.open();
d.write("<script>window._hash = '" + s + "'; window.onload = parent.hashListener.syncHash;<\/script>");
d.close();
},
var f = document.getElementById("state-frame");
var d = f.contentDocument || f.contentWindow.document;
d.open();
d.write("<script>window._hash = '" + s + "'; window.onload = parent.hashListener.syncHash;<\/script>");
d.close();
},
De exacte regel 133 is die begint met var d = f.contentDocument
Gewijzigd op 01/01/1970 01:00:00 door Michel de Groot
Is f niet 'null'? En zo nee, als f.contentDocument niet bestaat, bestaat f.contentWindow dan wel? Want je krijgt wss de foutmelding omdat je een property van een ding dat niet een object is wilt opvragen. Dus of f, waarvan je contentDocument wilt hebben bestaat niet, of f.contentWindow, waarvan je document wilt hebben bestaat niet.
Zoals al eerder gezegd: waarom het wiel opnieuw uitvinden? Gebruik een js framework die al dit werk voor je doet. Kijk bijvoorbeeld eens naar jQuery De functie .load() doet alles wat jij wil in 1 call.
n0xie schreef op 13.09.2008 15:41:
Zoals al eerder gezegd: waarom het wiel opnieuw uitvinden? Gebruik een js framework die al dit werk voor je doet. Kijk bijvoorbeeld eens naar jQuery De functie .load() doet alles wat jij wil in 1 call.
hehe daar heb ik nu niet zoveel aan :-D