0

Microsoft ブログから解決策を見つけました...以下を参照してください

まず、ランダムという言葉は好きではありませんが、この問題のテスト ケースには相関関係が見当たらないので、ランダムを使用してこの問題の一部を説明します。

セットアップ: EditForm.aspx と NewForm.aspx のカスタマイズされた UI を作成したリストがあります。2 つの間で同じ JS ファイルと JavaScript を使用します。場所の選択を説明するために、Google マップを追加しました。いくつかの動的検証のために、「OK」ボタンに追加のコードを追加しました。私は動的メニューのこともたくさんしました。すべてのユーザーは IE 9 を使用し、サイトは MOSS 2007 サーバー上にあります。

問題: EditForm.aspx でのみ、[ランダムに] [OK] をクリックすると、すぐに白い画面が表示されます。フォームが保存されず、白い画面のソース コードを表示すると、空の HTML ページが見つかります。

この問題を見つけようとしたこと: - これが発生するユーザーとコンピューターを絞り込もうとしたところ、すべてのコンピューターのすべての人に発生することがわかりました (もう一度「ランダムに」)。- 「OK」ボタンの前にあるコードを無効にしてみました - IE9 の外部スクリプトをデバッグしてコードをたどってみましたが、エラーは見つかりませんでした

コードを提供できますが、少し長く、どこから始めればよいかわかりません。必要に応じて提供できます。

事前に助けてくれてありがとう。

編集:これはOKボタンを再配線するコードです(以前に値を「保存」にリセットしました)

    var okBtns = $('input[value="Save"]')
    $.each(okBtns, function(index,value){
        okFunction=$(value).attr('onclick');
        $(value).attr('onclick','return false;')
        $(value).bind('click', function(){
            if ($('#'+StatusBox).val()=='Draft') {$('#'+StatusBox).val('New Request')}
            var err = clickOKbutton();
            if(err==0) {okFunction()};
        });
    });

これは、元の共有ポイント操作の先頭に追加されたコードである clickOKbutton 関数です。

function clickOKbutton()
{
    //all of the imput validation i could ever wish for!!!!
    var NoteVal = ''
    var NameAry = $('#'+PersonnelBox).parent().children(":first").children("SPAN").children("SPAN");
    $.each(NameAry, function(index,value){
        var $n=$(value).html();     
        if(NoteVal.length==0) {NoteVal=$n} else {NoteVal=NoteVal+';'+$n};
    });
    //$('#'+AddNotes).val(NoteVal);

    var plh = $('#'+PersonnelBox).parent().html()
    userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','');
    $.each(OICUsers, function(i,v){
        if(plh.indexOf(v) > -1 && st=='New Request'){
            $('#'+StatusBox).val('OIC Bypassed')
            $('#'+CommentsBox).val('OIC is travling on this TDY/TAD and cannot approve. So this request is bypassing the "OIC Approval" step')
        }
    });

    /*userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','')

    $('#' + ModBox).closest('TR').show();*/
    var message=''
    message = detectFieldChanges(AllFieldsArray,AllOrgValArray,"Draft,New Request,Modified")        
    if(message.length>0){
        $('#'+ModBox).val(message);
        AutoResizeTextarea(ModBox);
    }

    message = detectFieldChanges(ValFieldsArray,OrgValuesArray,"Draft,New Request,Modified,OIC Approved,OIC Bypassed,Pending RFI,Ready for COS")
    userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','');
    if(message.length>0&&$.inArray(userNameTx,COSUsers)==-1){
        $('#'+StatusBox).val('Modified').change;
        $('#'+StatusLongBox).val('Modified').change;
    }       


    //Subject box
    var pb = NoteVal;
    var ep = $('#'+ExtPersonnel).val();
    var ab = $('#'+AddressBox).val();
    var sd = $('#'+sDateBox).val();
    var ed = $('#'+eDateBox).val();
    var st = $('#'+StatusBox).val();
    var p = pb+';'+ep;
    var p = p.replace(/mossaspnetmembershipprovider:/g,'');
    var p = p.slice(0,-1);
    var ad = ab+' '+sd+' to '+ed;
    var s = 'eTDY | '+st+' - '+p+' - '+ad;
    if(s.length>255){
        var l = s.length-255;
        p = p.substring(0,p.length-l);
        s = 'eTDY | '+p+' - '+ad;
    }
    $('#'+Subject).val(s);

    //check Lat/Lng value
    if($('#'+LatBox).val()=='' || $('#'+LngBox).val()==''){
        //alert("Cannot continue unless the Lat Lng has a vallid coordinate");
        if($('#LatLngError').length==0){
            errorHTML='<br><span class="ms-error" id="LatLngError">You must specify a value for Lat and Lng</span>'
            $('#'+AddressBox).closest('TD').append(errorHTML)

        }
        return -1
    }
    return 0
};

ややこしいですが、理解していただけると幸いです。

編集2:

ランダム性を追跡したと思います...すべてのカスタムコードを完全にオフにしましたが、まだ問題があります。次に、作業記録と非作業記録を比較してみました。複数人のピッカーでフィールドに着くまで、すべてが正常に見えました。そのフィールドに2人以上いる場合は通常どおり保存されますが、ピープルピッカーフィールドに2人以上いるレコードを変更すると、この問題が発生します。私はもう少し研究を行うつもりであり、私の結果を投稿します。

編集3:

http://blogs.msdn.com/b/jorman/archive/2009/12/22/mystery-of-the-sharepoint-white-screens.aspx

この問題はすべて、IIS の構成と偽装レベルに帰着します。どうやら私たちのサーバー管理者は、誰にも言わずに変更することに決めたようです。

4

2 に答える 2

0

通常、Web ページ (特に MOSS) から [一見ランダムな] 動作が発生する場合、それはページにあいまいなイベントが定義されていることを意味します。通常、何らかの JScript をボタンまたはフォーム on_submit に追加すると、これが発生します。
あなたのコードを見なければ、それ以上に絞り込むことはできません。HTML フォームまたはボタン クリック イベントで JavaScript イベントを探すか、どこも指していない (href=#) が JavaScript を含むアンカー [a] タグを探すことをお勧めします。次に、(厳密に) HTML の方法 (フォーム、送信ボタン) または JavaScript の方法 (フォームなし、asp:button なし) を実行することを決定し、もう一方を配線解除します。

于 2012-12-06T21:01:33.030 に答える
0

この問題はすべて、IIS の構成と偽装レベルに帰着します。どうやら私たちのサーバー管理者は、誰にも言わずに変更することに決めたようです。

http://blogs.msdn.com/b/jorman/archive/2009/12/22/mystery-of-the-sharepoint-white-screens.aspx

于 2012-12-12T21:50:00.070 に答える