0

開発マシンで正常に動作する次のコードがあります。しかし、IIS にデプロイすると起動the .click()しません。

  1. ドロップダウン ボックスがあり、ステータスが選択されている場合、次のコードを追加して RadWindow を開きます

    if (ddlStatusID.SelectedValue.ToString() == "2")
         btnUpdateStatus.Attributes.Add("onclick", "return OpenWindow2('" + 
         ResolveUrl("~/Request/AddBillableTime.aspx?  RequestId=" + RequestId.ToString()) +  
    "','650','320');");
    else
       btnUpdateStatus.Attributes.Add("onclick", "");
    
  2. ポップアップページで、ユーザーが追加したボタンをクリックすると、次のようになります

    ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", 
     "ClosePopup();", true);
    

これは ClosePopup JavaScript です。

function ClosePopup() {
    //debugger;
    alert('This is before closing the window');
    var oWindow = GetRadWindow();
    oWindow.argument = null;
    oWindow.close();
    alert('This is after closing the window');
    oWindow.BrowserWindow.ButtonClick();
    }
  1. メイン ウィンドウには、上記の JavaScript の最後の行で呼び出される次の JavaScript があります。

    function ButtonClick() {
    //debugger;
    alert('This is before button click!');
    var btnUpdateStatus =   
    document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
    alert('This is getting the button!');
    btnUpdateStatus.setAttribute("onclick", "");
    alert('This is setting the button!');
    btnUpdateStatus.click();
    alert('This is after clicking the button!');
    

    }

アラートを使用して、javascript 関数がどこまで実行されているかを確認しました。

Visual Studio を使用して実行したり、ローカル IIS サーバーでホストしたりすると、機能全体が正常に動作します。しかし、サーバーにデプロイすると、click() イベントの発生が停止します。

コードに何か問題がある場合はお知らせください。

4

2 に答える 2

2

私は新しいタスクを割り当てられたため、この問題を調査する時間がありませんでした。しかし、同じタスクに戻ったら修正する必要がありました。この問題を解決するために、友人に助けてもらいました。現在のロジックを少し変更する必要があり、以下で解決策を説明しました。

ButtonClick関数を使用してページへの手動投稿を作成するために、関数を次のように変更しました__doPostBack

function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}

Page_Loadページのメソッドからポストバックを処理しました。

if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
     UpdateStatus();
}

ポストバック イベント ターゲットがメソッドから割り当てられたイベント ターゲットと一致する場合、__doPostBackメソッドを呼び出してステータスを更新しました。

このようにして、問題を回避できました。ButtonClickしかし、古い関数を使用してイベントが発生しなかった理由はわかりません。

于 2012-10-17T03:55:26.553 に答える
0

コードが PC で正常に動作する場合、怪しいと思われるのは次の 2 行だけです。

1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');

2. btnUpdateStatus.setAttribute("onclick", "");

最初の行では、代わりにこれを行う必要があります。

document.getElementById('<%=btnUpdateStatus.ClientID%>');

そして2行目は、基本的に何もしてはいけないonclickハンドラを設定しているようです。""

それはまったく問題ではないかもしれません。最善の方法は、呼び出されている適切な Javascript 関数にブレークポイントを設定して、Firebug でデバッグすることです。

于 2012-08-16T17:19:53.640 に答える