2010-05-29 6 views
1

Je pense à un système dans lequel j'autorise les utilisateurs à créer des widgets Javascript pour les autres utilisateurs à intégrer dans leur tableau de bord sur mon site Web. Je voudrais limiter ces widgets de façon assez stricte, de sorte que chacun d'entre eux existerait comme un iframe gardé sur son propre nom d'hôte unique: le widget avec l'ID # 47 serait accessible au w47.widgets.example.com, par exemple. Il serait utile, pour les boîtes de dialogue d'autorisation et similaires, d'autoriser le widget à appeler des méthodes très spécifiques explicitement accordées par la fenêtre parente, sans autoriser l'iframe à faire ce qu'il veut avec le cadre parent sur l'utilisateur. nom.Puis-je accorder des méthodes Javascript explicites à un iframe hôte différent?

Est-il possible qu'un document parent autorise explicitement certains appels de méthode à un document enfant sur un hôte différent?

Répondre

1

Vous pouvez créer votre propre protocole avec postMessage et receiveMessage pour laisser exactement ce que vous voulez. Cela peut ne pas fonctionner pour vous si vous avez une grande variété de navigateurs à supporter, cependant. Les navigateurs plus anciens (IE 7 et ci-dessous, par exemple) nécessitent une solution de contournement pour faire cette technique qui est un peu méchant.

+0

Ooh, c'est chic! Et j'ai trouvé [un plugin jQuery] (http://benalman.com/projects/jquery-postmessage-plugin/) qui semble implémenter les solutions de contournement cross-browser pour moi. Merci! – Matchu

+0

Ce plugin fonctionne très bien, assurez-vous que les URL correspondent. J'ai passé la majeure partie de ces 2 jours à faire tout ce travail dans tous les navigateurs, même avec le plugin, en raison de la nécessité de faire correspondre l'url côté serveur et côté client - j'avais besoin de mettre en place un canal de communication bidirectionnel Je suis un peu risqué. Certainement possible, cependant. – x1a4