Avere un C# WebBrowser
control all'interno della mia applicazione WinForms, e di essere a conoscenza del Navigating
event, non ho mai si avvicinò con una soluzione elegante e piacevole al seguente:Come distinguere tra un utente che fa clic su un collegamento e la pagina che esegue un reindirizzamento automatico?
- Se un utente naviga attivamente a un altro URL, voglio consentire it.
- Se la pagina reindirizza "da solo" a un altro URL, desidero annullare .
Per caso 1 ci sono alcuni casi mi vengono in mente: scatta
- utente un tag
a
e l'attributohref
viene valutata per caricare un altro URL. - L'utente fa clic su un elemento con un gestore di eventi javascript
onclick
che chiama una funzione che utilizzawindow.location
per caricare un altro URL.
Per caso 2 posso immaginare di:
- La pagina caricata contiene un tag
iframe
che carica un URL all'interno del IFrame. Questo spara l'eventoNavigating
. - C'è qualche timer JavaScript che viene avviato al caricamento della pagina e quando si attiva, utilizza
window.location
per caricare un altro URL. - La pagina caricata contiene un
meta refresh
header tag per caricare un altro URL dopo alcuni secondi.
Quindi la mia domanda è:
Come rilevare all'interno della manifestazione Navigating
(o qualsiasi altro meccanismo) se un reindirizzamento viene attivata in modo esplicito da parte dell'utente o implicitamente dalla pagina?
Qualche informazione in più
- Il
WebBrowser
viene utilizzato all'interno di un basato su Windows applicazione backend CMS. - Ho quindi il controllo completo sul contenuto caricato all'interno del controllo WebBrowser.
- Significa che posso manipolare la stringa HTML completa prima di essere inviata al browser, se necessario.
- Se è più applicabile, mi piacerebbe anche ottenere soluzioni solo JavaScript che potrei iniettare nell'HTML che viene caricato.
(Si prega di notare che io credo che questo non è un duplicato di this SO posting)