UpdatePanel 内にラップされた asp.net ボタンがあり、クリックすると非同期ポストバックが実行され、jquery ダイアログを表示する JavaScript が登録されます。
protected void btnAddData(object sender, EventArgs e) {
StringBuilder jqueryDialog = new StringBuilder();
jqueryDialog.Append("$(document).ready(function() {");
jqueryDialog.Append("RefreshData();");
jqueryDialog.Append("$('#divData').dialog({ modal: false, draggable: true, title: 'Historical Data', width: 700 });");
jqueryDialog.Append("});");
ScriptManager sm = ScriptManager.GetCurrent(this);
if (sm != null && sm.IsInAsyncPostBack) {
ScriptManager.RegisterClientScriptBlock(
this, typeof(Page), Guid.NewGuid().ToString(),
jqueryDialog.ToString(), true);
}
}
ご覧のとおり、javascript は最初に RefreshData() という名前の関数を呼び出します。この関数は、私のマークアップに javascript として存在します。
<script type="text/javascript" language="javascript">
if ($) {
$(document).ready(function () {
function RefreshData() {
alert("Data Refreshed!");
}
});
}
</script>
ただし、Firefox では、RefreshData が定義されていないというエラーが表示されます。非同期ポストバックに登録した JavaScript は、マークアップで定義した JavaScript 関数を使用できないということですか?
助けてくれてありがとう。