Beetje oud topic, maar geen nut om hier vandaag weer een nieuwe over te openen.
Ik heb al een tijdje ajax werkend op mijn pagina, maar door fckeditor in een ajax pagina te hebben zitten kom ik een beetje in de knel met het vereiste om <script></script> op mijn opgevraagde pagina uit te voeren.
Ik heb om ajax op mijn site uit te voeren een compact ajaxscript gevonden die ik voor elke pagecall kan hergebruiken (geen zin om hele frameworks erachter te installeren)
dit script is op zich fantastisch maar moet het helaas standaard zonder de optie doen om <script> areas uit te voeren. Vandaar dat ik een beetje heb lopen mengen met bovenstaande code.
dit is het resultaat:
NB: dit is onderdeel van de gehele ajaxpage() functie dus het gedeelte waarin de GET/POST vars worden meegestuurd zitten in de gehele functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
var re = /<script(\s[^>]*)?>([\s\S]*?)<\/script>/gi, match;
while ((match = re.exec(page_request.responseText)))
{
if (window.ActiveXObject)
{
window.execScript(match[2], 'javascript');
}
else /* (window.XMLHttpRequest) */
{
window.eval(match[2]);
}
}
document.getElementById(containerid).innerHTML=page_request.responseText
} |
het script werkt op op zich perfect op elke browser.... maar toch krijg ik bij elke opgevraagde pagina een aantal keren een "
re has no properties" error. Volgens de debugger gaat het dan specifiek om deze regel:
code:
1
| while ((match = re.exec(page_request.responseText))) |
Nu probeer ik te bedenken waarom die wel werkt terwijl hij geen property heeft, maar klaarblijkelijk heeft dat met de werking van de eval() of de execScript() functies te maken (of beiden).
Heeft iemand een idee hoe ik dit kan voorkomen?
Of heb ik de syntax net niet goed gebruikt?
P.S. voor de personen die geinteresseerd zijn in het complete originele ajaxpage script:
(heb m volgens mij aangepast om via post ipv get te sturen)
http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm
voorbeeldgebruik van de bovengenoemde scripts:
code:
1
| <input type="button" onclick="ajaxpage('bronpagina.php', 'doelcontainer', 'var1=foo&var2=bar'); loadobjs('extrascript.js, 'anderestijl.css');" /> |
(bij loadobjs mag je een maar ook meerdere bestanden toevoegen waarbij het niet uitmaakt of je alleen .js, .css of beiden gebruikt).