Pascal: aus iFrame übergeordnetes Objekt ansprechen

Hallo!

ich will aus einem iFrame per JavaScript einen Layer in der übergeordneten seite (sprich: html-dokument, in welches das iFrame eingebettet ist) wechseln mit diesem code:

function nav1()
{
parent.MM_showHideLayers('subnavi_01','','show','subnavi_02','','hide');
}

bei normalen frames kann ich ja ohne probleme etwas in einem anderen Frame ändern, da dieser ja auch eine kennzeichnung hat.
aber nur so mit "parent" aus einem iFrame geht's irgendwie nicht.

kann jemand helfen????

  1. Mehrere Code-Schnipsel, bastele dir das richtige zusammen...

    Das übergeordnete Fenster kriegen:

    function getTopWindow()
    {
      var parentView = document.parentWindow?document.parentWindow:document.defaultView;
      return parentView.parent;
    }

    Einen Knoten 'node' aus dem iFrame ins übergeordnete Fenster importieren

    if (document.importNode)
          {
             // DOM 2 Level
             node2 = getTopWindow().document.importNode(node,true);
          }
          else
          {
            // Internet Explorer hat noch DOM 1 Level
            // bietet aber eine Alternative mit DHTML
            var nodeText = node.outerHTML;
            var docf = getTopWindow().createDocumentFragment();
            var c = docf.createElement("div");
            c.innerHTML = nodeText;
            docf.appendChild(c);
            node2 = docf.firstChild;
            delete docf;
          }

    Danach müsstest du Node2 mit appendChild eigentlich überall einhängen können.

    1. scheint mir ja eine ziemlich heftige Lösung zu sein, die du da anbietest; ich probier's mal aus.. und melde mich sonst wieder... danke!

  2. sorry! funktioniert doch... (fast jedenfalls)

    weiss jemand, wieso das im Safari (Mac OS X) nicht funzt?
    gibt es einen Hack dazu?

    pascal