0

これはおそらくヒバリですが、レンダリングに時間がかかることがあるため、recaptchaコントロールの場合、これは可能ですか?

レンダリングに5秒以上かかる場合は、オブジェクトのレンダリングを停止して、自分のキャプチャを表示したいと思います。

ページの読み込み時にタイマーを開始し、5秒が経過した場合、何らかのイベントでrecaptchaコントロール(prerender?)で、レンダリングをキャンセルするか、非表示にするか、その効果をもたらします。これはサードパーティのユーザーコントロールであるため、ソースがありません。

アップデート:

投稿後、以下のコードを試してみました。これは、ユーザーコントロールがサーバーに接続できない場合、つまりインターネット接続を切断する場合に機能しますが、コントロールがサーバーの復帰を待機しているときに、非常に長い一時停止があるかどうかはわかりません。それに。ミリ秒間隔を1に変更しても、コントロールがレンダリングされます。

<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
4

1 に答える 1

1

iframeを使用してキャプチャブロックを格納し、readystatechangedイベントまたはlayoutcompleteイベントのいずれかにサブスクライブできる場合があります。次に、setTimeout()を使用して、待機する最大時間の後に実行するJavaScriptをスケジュールできます。これらのイベントのいずれも発生しない場合は、DOMからiframeを削除し、独自のiframeに置き換えます。

于 2009-07-16T14:08:46.920 に答える