Lorsque la page affichée dans notre CDHtmlDialog fait un Asp.Net AJAX UpdatePanel nous obtenons un événement de navigation, mais tout ce qui semble après être perdu. Nous n'avons plus de document ou n'obtenons aucun événement de souris sur la page.Comment obtenir le document CDHtmlDialog après Asp.Net AJAX UpdatePanel
Répondre
On dirait que j'ai fait le message original en tant qu'utilisateur non enregistré, donc je ne pense pas que je peux le modifier. Nous avons réussi à contourner le problème original, mais il est revenu dans un contexte différent (il commence vraiment à détester CDHTMLDialog).
est ici la cause du problème:
appels Javascript sont à l'origine d'un événement Navigate et CDHtmlDialog :: OnBeforeNavigate est appelé et se déconnecte et supprime le IHTMLDocument2. Malheureusement, ce n'est pas un vrai navigateur car la page n'a jamais changé. Cela signifie que CDHtmlDialog :: OnNavigateComplete n'est jamais appelé pour récupérer le document.
Pour aggraver les choses, lorsque je redéfinir CDHtmlDialog :: OnBeforeNavigate, je trouve que la chaîne URL est illisible (bug)?
La solution la plus simple (mieux?):
Nous devons intercepter l'événement Avant Navigate et appeler uniquement _OnBeforeNavigate2 du CDHtmlDialog si l'URL est pas une action javascript:
BEGIN_EVENTSINK_MAP(CMyHTMLDlg, CDHtmlDialog)
ON_EVENT(CMyHTMLDlg, AFX_IDC_BROWSER, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2, VTS_DISPATCH VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_PBOOL)
END_EVENTSINK_MAP()
void CMyHTMLDlg::OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData,VARIANT* Headers, BOOL* Cancel)
{
...
if (URL != NULL)
{
// Check if navigation is to a folder..
CString url = CString(*URL);
if(url.Left(11) != _T("javascript:"))
{
_OnBeforeNavigate2(pDisp, URL, Flags, TargetFrameName, PostData, Headers, (BOOL*)Cancel);
// If dynamic linking MFC then the above handler doesn't exist. Need to call OnBeforeNavigate direct.
// This is from a code site, and it compiles, but I've never tested it to see if it works.
//CDHtmlDialog::OnBeforeNavigate(pDisp,(LPCSTR)URL);
}
}
}
La plupart des C'est assez standard pour configurer une sous-classe CDHtmlDialog, et c'est assez simple en fait, mais il m'a fallu un peu de temps pour comprendre comment gérer JavaScript. Malheureusement, je ne sais pas comment cela fonctionnera si le JavaScript apporte des changements dynamiques à la page elle-même.
notes A couple:
- Si la navigation doit être complètement annulée ici, puis définissez * Annuler = TRUE et ne pas appeler _OnBeforeNavigate2. Faites attention ici car cela annule également les actions JavaScript.
- Il n'était pas clair jusqu'à ce que j'ai vu le source, mais CDHtmlDialog :: _ OnBeforeNavigate2 appelle simplement CDHtmlDialog :: OnBeforeNavigate.
- 1. Page perdant le titre après UpdatePanel asyncpostback
- 2. Comment obtenir Asp.net AJAX IntelliSense sur un contrôle après OnInit
- 3. ASP.NET AJAX imbriqué updatePanel modalPopup funkiness
- 4. Utiliser ASP.NET AJAX UpdatePanel avec des gestionnaires
- 5. meilleure solution alternative pour ASP.NET AJAX UpdatePanel
- 6. asp.net ajax updatepanel et jouer du son
- 7. $ (document) .ready dans la page ascx après le rappel ajax
- 8. MVC Ajax UpdatePanel
- 9. Formview et MS-Ajax UpdatePanel
- 10. WebAsyncRefreshPanel vs Ajax UpdatePanel
- 11. ASP.NET - UpdatePanel et JavaScript
- 12. Ajout de contrôles dynamiquement à un UpdatePanel dans ASP.NET AJAX
- 13. ASP.NET Ajax: fermer la fenêtre après un appel Ajax?
- 14. asp.net UpdatePanel et validateurs problème
- 15. Briser le document PDF après 100 pages
- 16. jQuery nyromodal + ASP.Net + UpdatePanel/AJAX - endShowContent ne fonctionne pas, scintille, perd le focus
- 17. JQuery plug-in asp.net callout validateur UpdatePanel
- 18. jquery datepicker ms ajax updatepanel ne fonctionne pas après la publication
- 19. ASP.NET UpdatePanel Time Out
- 20. Rappel après le chargement d'un onglet par un ajax
- 21. jquery scrollpane ms ajax updatepanel ne fonctionne pas après la publication
- 22. Comment faderOut un div après le chargement d'un document?
- 23. Comment utiliser jquery avec asp.net ajax
- 24. Comment utiliser un UpdatePanel correctement? (asp.net)
- 25. Prévenir le zoom dans CDHTMLDialog (BHO on IE)
- 26. Comment faire un feu ASP.NET TextBox c'est feu d'événement onTextChanged dans un UpdatePanel AJAX?
- 27. Accès UpdatePanel à l'intérieur Vue d'un autre UpdatePanel ASP.Net
- 28. UpdatePanel dans le répéteur
- 29. file d'attente asp.net UpdatePanel publications
- 30. AJAX: Comment soumettre le bouton après avoir appuyé sur "Entrée"?