2009-04-30 7 views
0

J'ai une application Windows qui incorpore le contrôle IE WebBrowser et exécute un serveur Web local pour le diffuser. Les URL que je charge ne sont significatives que dans l'application et ne sont pas valides après la fermeture de l'application. Ils ne sont jamais visibles pour l'utilisateur. Ils ressemblent à ceci:Contrôle IE WebBrowser: empêcher les URL d'accéder à l'historique de l'URL de la barre d'adresse IE

http://127.0.0.1:1234/something.html 

1234 est un numéro de port aléatoire pour cette session. Mais ces URL apparaissent dans l'historique de la barre d'adresse du navigateur IE - lorsque je tape "1" dans la barre d'adresse d'Internet Explorer, une liste déroulante apparaît avec toutes mes URL. Ils sont inutiles dans ce contexte. Donc, ma question est: comment puis-je empêcher mes URL de polluer cette liste déroulante?

Un peu plus d'informations: je charge les URL à l'aide window.location.href = URL, plutôt que par la méthode Navigate, donc navNoHistory est pas une option (et je pense que fait référence à l'arrière/Historique avant de toute façon).

J'ai également essayé de supprimer les URL après le fait en utilisant IUrlHistoryStg::DeleteUrl(), mais cela ne fonctionne pas (il retourne le succès mais n'a aucun effet) - toutes les astuces pour faire ce travail seraient reçues avec reconnaissance.

Répondre

2

J'ai maintenant fait ce travail avec IUrlHistoryStg::DeleteUrl() - si vous l'appelez immédiatement après avoir demandé le contrôle de charger une URL, il ne fonctionne pas. Je devine que c'est parce que le contrôle n'ajoute pas l'URL à l'histoire jusqu'à ce qu'il ait fini de charger le document. En appelant le IUrlHistoryStg::DeleteUrl() par la suite, je peux supprimer les URL de l'historique en appelant le

.

Je préfère quand même qu'ils ne soient pas arrivés là en premier lieu.

0

Ma réponse originale était exactement le contraire de ce que vous vouliez.

Je ne peux pas reproduire ce que vous rencontrez mais je n'utilise pas de contrôle du navigateur.

Je voudrais essayer d'ajouter un script au html ou un cadre/iframe caché et envelopper l'appel afin que le navigateur l'exécute dans le script wrapper. Script basé Navigates ne devrait pas entrer dans l'histoire, il m'a fallu un certain temps pour trouver un moyen de bidouiller IE pour ajouter des éléments de l'histoire avec le déclencheur d'événement click() de ma réponse originale.

<script> 
    function GoTo(url) { 
     location = url; 
    } 
</script> 
+0

Vous voulez dire qu'empêcher l '** affichage à l'écran ** du lien - c'est-à-dire l'équivalent moral du changement de police - l'empêche d'être ajouté à l'historique? C'est trop bizarre! –

+0

effectivement, je me suis juste souvenu que c'était pour le contraire exact de la question. J'ai eu des problèmes pour faire apparaître l'histoire d'IE dans l'histoire d'IE avec le script, je vais essayer de corriger le code si je peux m'en souvenir. La démo de sécurité a secrètement téléchargé l'URL à l'insu de l'utilisateur et a effectivement «encadré» l'utilisateur en entrant tous les historiques de l'information de suivi, les journaux ISP et les journaux du serveur. Accès non autorisé au répertoire/admin/par exemple. –

+0

OK, c'est un peu un soulagement en fait :) –

Questions connexes