1

だんだん気が狂いそう。ウェブページにテキスト ティッカーを表示しようとしています。モニターで実行され、マウスが接続されていません。建物周辺の情報を表示するだけです。私が良い考えだと思ったことを追加したいことが1つあります。数人が編集できる下部のスクロール テキスト メッセージ。

私がこれを使用しているのは、十分にスムーズにスクロールできると思われる唯一のものであり、理解するために開発チームに参加する必要があるほど謎めいたものではないからです。

div テキストを変更してクローラーにスクロールさせることはできないためです。レンダリング中に div テキストを設定し、クローラーを再初期化する更新パネルに配置しようとしました。メッセージを制御する div は、「crawlerUpdate」と呼ばれる UpdatePanel にあります。 div がリセットされる間の値。

メッセージを 10 秒ごとに更新するように設定しましたvar oCrawlerUpdate = setInterval(function () { updateCrawler() }, 10000);(テストのためだけに、ポーリングはもっと長くなります)。

私の更新クローラーは次のようになります。

    function updateCrawler(){
        msgString = '';
        $.getJSON('getCrawlerText.aspx', function (data) {
            $.each(data, function (index, elem) {
                msgString += index + 1 + '. ' + elem.message + '- - -';
            });

            if ($('#textCrawler').html() != msgString)
                __doPostBack("<%= this.postBackVehicle.UniqueID %>", "");
        });
    }

ここで私はそれを失い始めます。私の理解を少し超えていますが、うまくいきます。起動スクリプトを登録する必要がありました。私が想定しているのは、更新パネルがポストバックしたときに注入され実行されることです。

 ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.postBackVehicle);
 ScriptManager.RegisterStartupScript(this.crawlerUpdate, this.GetType(), "reInitCrawler", "if(!msgString)msgString=\"Loading ticker message...\";$(\"#textCrawler\").html(msgString);initCrawler()", true);

Firefox で 100% 動作します。データベース内のメッセージを変更すると、次の 10 秒でスクローラーが新しいメッセージで再起動します。人々が使用するIE7にロードすると、コードではなくjQuery(1.4.1)ファイルのどこかに未定義のエラーが発生し、どこから始めればよいかわかりません。昔、私がテストしていたとき、スクローラーを追加する前に毎回新しいメッセージを表示するように div を取得することができました。divでメッセージが点滅するのを見ることができますが、IEはすぐにエラーになります。

また、onLoad では div が空白であり、最初は機能することも指摘しておく必要があります。10 秒後の最初のポーリングまで、ロード中のメッセージをスクロールします。私はこれを必要以上に指数関数的に難しくしているとほぼ確信していますが、わかりません。

私はまだ他のスクロールツールをグーグルで検索していますが、これは私が行ったのと同じくらい近いので、IEが消化不良を引き起こしている理由を理解したいと思います. 私は IE が気まぐれな獣であることを知っています。それがかなり簡単なものであることを願っています。私はとても近くにいるので、先に進みたいです。

編集:提供された回答を正確には使用しませんでしたが、スクローラーライブラリをダンプし、2 つの関数を使用しました。

    function resetCrawler() {
        var contWidth = $('#scrollContainer').width();
        var blockWidth = $('#textCrawler').width();
        var moveLen = (contWidth + blockWidth) * -1
        var timeFigure = (-1 * moveLen)/.05;
        //console.log("Container: " + contWidth + " Block: " + blockWidth + " MovementSpan: " + moveLen + " TimeSpan: " + timeFigure);

        $('#textCrawler').html(msgString).css('left', contWidth).animate({ left: moveLen }, timeFigure, 'linear', function () { resetCrawler() });
    }

    function updateCrawler(){
        msgString = '';
        $.getJSON('getCrawlerText.aspx', function (data) {
            $.each(data, function (index, elem) {
                msgString += index + 1 + '. ' + elem.message + '- - -';
            });

            if ($('#textCrawler').html() != msgString) {
                resetCrawler();
            }
        });
    }

ミリ秒あたりのピクセル数を計算し、メッセージの長さに関係なく同じ速度でスクロールするようにしました。あなたが投稿したリンクと同じ問題に遭遇したのではないかと思います.jQuery内で何かを呼び出していました. 内側の div の幅によって決定される終了時にのみ再度呼び出します。やるべきことはまだありますが、私はそれで十分だと言っています...

お手伝いありがとう。

4

1 に答える 1