2008-12-29 7 views
1

J'ai une page Web à base de cadres avec 3 cadres. Un topliner, une navigation sur le côté gauche et un cadre de contenu en bas à droite.Position du cadre en JavaScript

Maintenant, je veux afficher un menu contextuel lorsque l'utilisateur clique avec le bouton droit sur le cadre de contenu. Parce qu'un conteneur div ne peut pas sortir du cadre, mon idée était de placer toute la page d'image dans une nouvelle iframe. Dans cette page, je pourrais avoir un second iframe qui est mon menu contextuel.

Alors maintenant, je vais avoir cette mise en page:

<html> (start-page) 
    <iframe (real content) 
    <frameset 
     top-frame 
     navigation-frame 
     content-frame 
    > 
    > 
    <iframe> (my popup-menu, positioned absolutelly and hidden by default) 
</html> 

Dans mon cadre de contenu J'ai un « onmouseover » -event affecté au corps-tag. Cet événement devrait ouvrir le popup-iframe à la position actuelle de la souris. Et voici exactement mon problème: Comment obtenir les coordonnées de la souris relativement au top-site (début-page dans mon brouillon)?

Actuellement je rencontre ce mouseDown-fonction (fonctionne uniquement dans Internet Explorer, en ce moment - mais le faire marcher dans FF & Co ne devrait pas être le problème ...)

function mouseDown(e) 
{ 
    if (window.event.button === 2 || window.event.which === 3) 
    { 
    top.popupFrame.style.left = event.screenX + "px"; 
    top.popupFrame.style.top = event.screenY + "px"; 
    top.popupFrame.style.display = ""; 
    return false; 
    }  
} 

Comme vous pouvez le voir , les variables "event.screenX" et "screenY" ne sont pas des variables que je peux utiliser, car elles ne sont pas relatives à la page principale.

Des idées?

+0

Cadres dans les cadres ne sont pas une solution optimale. Je suggère que vous supprimez la page avec des définitions de jeu de cadres et remplacez cela par la page avec iframe. De cette façon, vous obtenez seulement un niveau de profondeur des cadres. – some

+0

En outre, puisque vous utilisez seulement window.event dans votre mouseDown, cela ne fonctionnera que dans IE et peut-être Opera. – some

+0

Comme je l'ai écrit dans ma question, je connais déjà le "window.even" - problème - donc c'est juste un code de test rien finalement ... –

Répondre

1

Si vous envisagez uniquement de prendre en charge IE, vous pouvez essayer d'utiliser une nouvelle fenêtre modale en appelant window.showModalDialog. Vous pouvez positionner la nouvelle fenêtre n'importe où sur l'écran.

Il y a de nombreux inconvénients à utiliser une nouvelle fenêtre en général et modal à cette ...

Soit dit en passant - FF 3 et jusqu'à aussi supports window.showModalDialog

0

Je vous recommande fortement de changer votre jeu de cadres en une disposition DIV standard en utilisant css. Voici un bon point de départ pour configurer lots of different css layouts. Je sais que ce n'est peut-être pas ce que vous voulez entendre, mais les cadres ont beaucoup d'inconvénients en plus du problème de menu contextuel que vous rencontrez actuellement. Par exemple:

  • Les cadres sont difficiles ou impossibles à mettre en signet correctement car le jeu de cadres est généralement la seule page visible dans l'adresse.
  • Il est très facile de sortir d'un jeu de cadres en chargeant un lien dans une nouvelle fenêtre du navigateur. Cela signifie qu'un utilisateur peut perdre sa navigation ou se perdre.
  • Ils ne se dégradent pas correctement sur les appareils mobiles et les navigateurs texte seulement. Un gros avantage pour les mises en page CSS est que même sans les styles activés, ils sont toujours utilisables.
1

Vous dites que c'est une application d'entreprise - devez-vous supporter tous les principaux navigateurs, ou est-ce que IE est suffisant?

Je demande cela parce que IE a une fonction qui fonctionne exactement comme vous avez besoin:

window.createPopup(...) 

http://msdn.microsoft.com/en-us/library/ms536392(VS.85).aspx

Le pop-up sera visible même en dehors de la fenêtre du navigateur! :-)

Pour l'afficher, utilisez la méthode .show (...) qui accepte les arguments de position et de taille (reportez-vous à MSDN pour plus de détails). La bonne chose est, vous pouvez également passer une référence à un élément de la page par rapport auquel la position est relative, de sorte que vous pouvez facilement positionner le popup par rapport à un certain élément de page, certain cadre, certaine fenêtre de navigateur ou même par rapport au bureau .

+0

Belle chose - mais cela ne résout pas le problème: sur quelle position devrais-je popup la fenêtre? –

+0

J'ai ajouté des informations sur la méthode show et le positionnement relatif. Est ce que ça aide? – qbeuek

Questions connexes