webForumDet fria alternativet

Skapa element dynamiskt med externt innehåll vid onload

JavaScript

1 svar · 423 visningar · startad av nicclas

Medlem sedan feb. 20001 050 inlägg
Frågan#1

Hej,

jag har problem med att anropa en Javascriptfunktion via onLoad, och ha ett script i HEAD-taggen. Skriptet som ligger i HEAD skapar ett HTML-element dynamiskt. (Oj, vad snurrigt detta är!) Problemet är att det verkar ge olika resultat i IE och Firefox/Opera. I Firefox och Opera funkar det som jag vill, men inte i IE.

Resultatet i Firefox är att texten "Inladdad data: hemma" visas direkt när sidan laddat. I IE måste jag klicka på knappen för att texten ska visas.

Jag har satt upp ett exempel här: http://www.n7.se/l.php och för att se någon skillnad måste man alltså prova i IE och Firefox/Opera.

Koden som körs ser ut så här:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Den spännande sidan l</title>
<script type="text/javascript">
var region = "";
var f = f_skapaElement('script'); 
// Filen testing.php innehåller endast texten: region="hemma";
f.src = 'http://www.frisim.com/testing.php'; 
document.getElementsByTagName('head').item(0).appendChild(f);

function v(){
  var l=document.getElementById('visa');
  l.innerHTML = 'Inladdad data: '+region;
}
function f_skapaElement(element) {
  if (typeof document.createElementNS != 'undefined') {
    return document.createElementNS('http://www.w3.org/1999/xhtml', element);
  }
  if (typeof document.createElement != 'undefined') {
    return document.createElement(element);
  }
  return false;
}
</script>
<body onload="v()">
<div id='visa'></div> 
<input type='button' onclick='v()' value='Visa'/>
</body>
</html>

och i filen frisim.com/testing.php som laddas finns bara texten:

region="hemma";

Är det någon som har en aning om hur man kan åtgärda detta problem, dvs så att kan inte behöver klicka på knappen för att visa texten även i IE.

Vore jättetacksam för en hint i rätt riktning :)

Medlem sedan feb. 20001 050 inlägg
#2

Haha, jag har löst det! Det verkar finnas misnt två alternativ:

  1. Lägg till raden:

f.onreadystatechange=v;

efter ...appendchild(f);-raden

  1. Lägg till texten "v();" i slutet av frisim.com/testing.php-filen.
254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)