2010-11-05 22 views
0

Dans le Javascript suivant je dois continuer à trouver le mainFrame des pages instantanées, y at-il une meilleure manière de faire ceci?Javascript: trouver un cadre sur mainPage dans les popups?

function sendRefreshMessage(data) { 
    var myObj = null; 
    myObj = document.getElementById('slPlugin'); 
    if (null != myObj) { 
     try { 
      //perform operation on myObj 
     } catch (err) { 
     } 
    } 
    else { 
     if (null != top.opener.top.mainFrame) { 
      myObj = top.opener.top.mainFrame.document.getElementById('slPlugin'); 
      if (null != myObj) { 
       try { 
        //perform operation on myObj 
       } catch (err) { 
       } 
      } 
     } 
     else { 
      myObj = top.opener.top.opener.top.mainFrame.document.getElementById('slPlugin'); 
      if (null != myObj) { 
       try { 
        //perform operation on myObj 
       } catch (err) { 
       } 
      } 
     } 
    } 
} 

Répondre

1

Eh bien, il est un produit de nettoyage (mais pas nécessairement mieux) façon de le faire, en supposant que votre plug-in réside toujours dans un élément appelé mainFrame:

function findPlugin(container) 
{ 
    var plugin = null; 
    if (container.mainFrame != null) { 
     plugin = container.mainFrame.document.getElementById('slPlugin'); 
    } 
    if (plugin == null && container.opener != null) { 
     plugin = findPlugin(container.opener.top); 
    } 
    return plugin; 
} 

function sendRefreshMessage(data) 
{ 
    var plugin = findPlugin(window.top); 
    if (plugin != null) { 
     try { 
      // Perform operation on `plugin`. 
     } catch (err) { 
      // Please avoid empty catch blocks, they're evil. 
     } 
    } 
} 
+0

Merci, je vais essayer. – VoodooChild

+0

Je n'avais que les blocs catch vides car j'obtiendrais une erreur JavaScript si l'opération sur le plugin échouait. – VoodooChild