Je suis en train d'écrire un jeu en ligne qui consiste à cliquer sur des liens sur différents sites sur Internet. Je sais que cela semble étrange mais la prémisse de base est que vous commencez sur ma page où vous cliquez sur un lien vers une page sur un autre site. Vous continuez à suivre les liens jusqu'à ce que vous arriviez à la page que vous essayez d'atteindre. Pensez à WikipediaGame.org. La différence étant que je n'ai pas de contrôle sur les pages réelles avec les liens. Ce que je dois être en mesure de faire est de suivre tous les liens sur lesquels ils ont cliqué, et quand ils arrivent à la dernière page, je veux les renvoyer à mon site (ou quelque chose dans ce sens). Ce que je pensais était que je pourrais peut-être intercepter les demandes de page et injecter du Javascript pour suivre les liens sur lesquels ils ont cliqué. Est-ce possible? Est-ce que quelqu'un a fait quelque chose comme ça? Évidemment, cela pourrait poser un risque de sécurité. Est-ce que j'ai d'autres options? Je veux éviter que l'utilisateur ne recueille une liste de tous les liens, puis les publie dans une zone de texte sur mon site.Injecter Javascript dans une page
Répondre
J'ai donc trouvé quoi faire. J'utilise un iframe comme ceci:
<iframe src="Puzzle/ContinuePuzzle" />
Il souligne la source de mon Mvc Controller. Dans mon contrôleur, je fais un WebRequest pour l'url que je veux et ensuite analyser le code HTML et coller mon propre javascript dans la page. La page agit et ressemble à l'autre site, mais elle provient en réalité de mon site.
Peut-être un bookmarklet pour envoyer la page actuelle à votre site? De cette façon, l'utilisateur aurait un contrôle complet sur la liste des liens partagés avec un minimum de travail.
Pour rendre ce navigateur compatible avec plusieurs navigateurs - je ne suis pas sûr s'il y a un moyen sans écrire un plugin pour chaque navigateur. Mais, je peux aussi me tromper :-)
Vous pourriez essayer de créer un bookmarklet (Javascript qui s'exécute lorsque l'utilisateur clique sur un signet donné), mais cela ne fonctionnerait pas automatiquement sur toutes les pages que l'utilisateur charge; l'utilisateur devra cliquer dessus pour l'exécuter.
Si vous souhaitez simplement prendre en charge Firefox, vous pouvez écrire un script Greasmonkey qui s'exécutera sur chaque page/site. Mais, cela limiterait la portée de vos utilisateurs.
Vous ne pouvez pas faire cela en utilisant javascript seul. Vous devez soit écrire un plugin firefox, soit un script GM.
Je ne sais pas comment vous injecteriez JavaScript dans les pages de quelqu'un d'autre, ce qui vous enverrait des messages. Cela ressemble à quelque chose qu'un virus ferait.
Je pense que vous pourriez accomplir quelque chose comme ce que vous voulez en utilisant un iframe.
Une méthode simple consisterait à inclure un préréglage iframe pour charger l'emplacement «démarrer» sur votre site, puis à inclure un bouton sur la page externe pour que l'utilisateur affiche son emplacement actuel (dans l'iframe).
Lorsque le bouton sur votre page vous pressé pouvez interroger l'état actuel de l'iframe ...
Les références à la fenêtre générée par l'iframe et au document chargé dans l'iframe peuvent être obtenus par les cadres de tableau en utilisant le nom attribut.
window.frames[iframeName] <br/>
window.frames[iframeName].document <br/>
La méthode de tableau cadres de référence a un large soutien, même parmi les navigateurs assez vieux, aussi longtemps que vous attachez un attribut de nom à l'iframe. Pour de meilleurs résultats, utilisez à la fois le nom et l'identifiant.
Pour plus d'navigateurs mis à jour, le document à l'intérieur de l'iframe peut également être référencée par des propriétés contentWindow (de victoire IE) et contentDocument (DOM) de l'élément iFrame:
// IE5.5+ windows
document.getElementById(iframeId).contentWindow
document.getElementById(iframeId).contentWindow.document
or,
// DOM
document.getElementById(iframeId).contentDocument
EDIT: Comme le suggèrent les commentaires ci-dessous, il semble que la plupart des navigateurs vous empêchent d'utiliser un iframe de cette façon.Vous pouvez démarrer une fenêtre où vous voulez, mais vous n'êtes pas autorisé à communiquer avec elle si elle n'est pas sur votre même domaine. Je suppose que vous pourriez construire un scenerio "Man in the Middle", où vous passez d'abord tout le trafic à travers votre serveur, mais ce n'est pas très pratique.
Voici un bon exemple de jQuery contrôle d'un iframe
http://wwwendt.de/tech/dynatree/doc/sample-iframe.html
espoir qui aide.
Je ne suis pas sûr que vous pouvez accomplir cela de la façon dont vous envisagez. Sans écrire un plugin de navigateur, je regarderais ce que font des sites comme KeepVid. Ils vous permettent de créer un signet sur votre barre d'outils, et l'URL du signet est la suivante:
javascript: document.location = 'http://keepvid.com/?url=' + escape (window.location);
Cela passe essentiellement l'URL que l'utilisateur est actuellement sur pour keepvid. Si vous utilisez ce concept, vous pouvez faire en sorte que votre utilisateur clique sur le bouton de signet pour vous l'enregistrer et vous pouvez le collecter et le renvoyer à l'endroit où il se trouvait.
- 1. Comment injecter javascript à une page sur IE 8?
- 2. Comment Injecter Javascript avec Firefox Extension
- 3. Injecter une chaîne dans un javascript sur une vue mvc asp.net
- 4. Utiliser cadre fédérateur, injecter dans la page System.Windows.Forms.Form
- 5. Injecter une dépendance dans un ModelBinder personnalisé
- 6. Injecter l'enregistrement dans DataList
- 7. Comment injecter une dépendance changeante
- 8. ASP.NET injecter javascript dans le contrôle de l'utilisateur imbriqué dans le panneau de mise à jour
- 9. Injecter jQuery dans une page échoue lorsque vous utilisez l'API Google AJAX bibliothèques
- 10. Injecter une dépendance à Linq à Sql
- 11. web2py - comment injecter html
- 12. Propriété Injecter une matrice avec Spring.Net
- 13. Comment injecter une dépendance WebRequest/Response?
- 14. Envoyer une page Web par javascript
- 15. Javascript; Envoi utilisateur vers une autre page
- 16. L'ordre de javascript est-il important dans une page?
- 17. Charger une page dans la même fenêtre via javascript
- 18. Insertion de fichier dans une page html en utilisant Javascript?
- 19. Méthodes pour générer dynamiquement JavaScript dans une page ASPX?
- 20. Cochez la case dans une page asax via javascript
- 21. créer un span et injecter une image
- 22. Dans Scons, comment puis-je injecter une cible à construire?
- 23. Utilisation de javascript sur une page aspx qui utilise une page maître, qui contient la page dans un formulaire?
- 24. javascript page rotation/refresh
- 25. Javascript rafraîchir la page
- 26. JavaScript: Pour l'autre page
- 27. Mate PropertyInjectors - Injecter dans la classe as3?
- 28. Comment injecter une valeur de formulaire avec jQuery?
- 29. Visualisations multiples dans une page
- 30. Comment puis-je obtenir la valeur d'une page html parent dans une page popup javascript?
Je ne pense pas que cela soit autorisé. Les navigateurs modernes n'aiment pas les scripts inter-sites – erikkallen
En effet, vous ne pourrez lire l'emplacement ou faire autre chose utile avec le cadre lorsqu'il se trouve sur le même site que la fenêtre parente. – bobince