Ceci est probablement une alouette, mais pour le contrôle de recaptcha car cela prend parfois beaucoup de temps à rendre, est-ce possible?Possible - annuler le rendu du contrôle utilisateur s'il n'est pas chargé en x secondes?
Si le rendu prend plus de 5 secondes, j'aimerais arrêter le rendu de l'objet et afficher mon propre captcha.
Je commencerais une minuterie au chargement de la page et si 5 secondes se sont écoulées, dans un événement dans le contrôle recaptcha (prerender?), J'annulerais le rendu ou le rendrait invisible ou quelque chose à cet effet. C'est un contrôle utilisateur tiers, donc je n'ai pas la source.
Mise à jour:
J'ai essayé le code ci-dessous après avoir posté. Cela fonctionne en sorte que si le contrôle utilisateur ne peut pas connecter son serveur, c'est-à-dire - je déconnecte ma connexion Internet, mais il ne comprend pas quand il y a une pause vraiment longue quand le contrôle attend le retour du serveur à lui. Même si je change l'intervalle millisecond à 1, le contrôle rend.
<MTAThread()> _
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim ucChk As New UCExistenceChecker(recaptcha, Me)
Dim doFindUC As System.Threading.TimerCallback = AddressOf ucChk.FindUC
Dim stateTimer As System.Threading.Timer = New System.Threading.Timer(doFindUC, Nothing, 0, 5000)
End If
End Sub
Public Class UCExistenceChecker
Dim _r As Recaptcha.RecaptchaControl
Dim _pg As Page
Sub New(ByVal r As Recaptcha.RecaptchaControl, ByVal pg As Page)
_r = r
_pg = pg
End Sub
Sub FindUC(ByVal stateInfo As Object)
If _pg.FindControl("recaptcha") Is Nothing Then
_r.SkipRecaptcha = True 'This "unrenders" the control, sort of.
End If
End Sub
End Class
Merci. Je vais jeter un coup d'oeil à ça. La chose étrange avec le contrôle recaptcha est parfois de 10 secondes à charger et rien n'est rendu à l'écran. Ne sachant pas ce qui se passe dans le contrôle, je suppose qu'il serait difficile de comprendre comment arrêter le rendu avant d'arriver à cette phase. – Steve