Hallo ^^
Wie du bereits richtig erkannt hast, wird in deinem Javascript Code ja der Inhalt des Iframes direkt nach der Übergabe der neuen URL abgefragt - zu diesem Zeitpunkt ist natürlich die Seite im Iframe noch nicht fertig geladen.
Ein ganz einfacher Lösungsansatz wäre es, einfach in den im Iframe geladenen Seiten Javascript einzubaun, der eben am Ende der Seite oder im onload-Event des Bodys steht, und dann eben den Inhalt ans Parent (das Haupt-Window) zu übergeben, z.B. so:
Hauptfenster:
...
<script type="text/javascript">
function show_menu(menu) {
document.getElementById('testframe').src = "map_info.php?a="+menu;
}
</script>
...
<div class="map_info_header" onclick="show_menu('npcs');">NPC</div>
<div id="content_box"></div>
<iframe name="testframe" src="empty.html"></iframe>
Beispielausgabe für map_info.php?a=npcs :
<div id="return_content">
<ul><li>NPC 1</li><li>NPC 2</li></ul>
...
</div>
<script type="text/javascript">
parent.document.getElementById('content_box').innerHTML = document.getElementById('return_content').innerHTML;
</script>
Grüße Wulf