- PR -

Response.Writeについて

1
投稿者投稿内容
Earth
会議室デビュー日: 2002/06/11
投稿数: 14
投稿日時: 2002-07-16 10:06
こんにちわ。

ASP.NETにて動的なJAVASCRIPTを生成したいと考えています。

そこでサンプルとしてメッセージ表示するJAVASCRIPTを動的にResponse.Writeする
下記のコードを作成しましたが、実行結果としてJAVASCRIPTコードが先頭に出力され
てしまうため、うまくいきません。

どなたか良い方法又は私のコードの問題点ありましたらお願いします。

---------------------------------------------------------------------------
xxxx.aspx
---------------------------------------------------------------------------
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="javasc.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" onload="NewPopUp()">
<form id="Form1" method="post" runat="server">
</form>
test
</body>
</HTML>
---------------------------------------------------------------------------
xxxx.aspx.vb
---------------------------------------------------------------------------
Public Class WebForm1
Inherits System.Web.UI.Page

#Region " Web フォーム デザイナで生成されたコード "

'この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
' コード エディタを使って変更しないでください。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化する ユーザー コードをここに挿入します。
Response.Write("<SCRIPT language=""JavaScript"">")
Response.Write("<!--")
Response.Write("function NewPopUp() { alert(""test""); }")
Response.Write("// -->")
Response.Write("</SCRIPT>")
End Sub

End Class
---------------------------------------------------------------------------
実行後に出力されるHTMLソース
---------------------------------------------------------------------------
<SCRIPT language="JavaScript"><!--function NewPopUp() { alert("test"); }// --></SCRIPT>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" onload="NewPopUp()">
<form name="Form1" method="post" action="WebForm1.aspx" id="Form1">
<input type="hidden" name="__VIEWSTATE" value="dDwtMTI3OTMzNDM4NDs7Pnj7e8c4Q64yUZKWRE2yhq5PjGls" />

</form>
test
</body>
</HTML>
---------------------------------------------------------------------------

以上、わかりにくいスレッドですがよろしくお願いします。
Earth
会議室デビュー日: 2002/06/11
投稿数: 14
投稿日時: 2002-07-16 10:16
自己レスです。

よくよく考えましたら・・・エラーの原因は

SCRIPT language="JavaScript"><!--function NewPopUp() { alert("test"); }// --></SCRIPT>

というコードがつながってるために・・・エラーになってました(*_*)

以上、問題解決しました。失礼しました。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-07-16 10:40
JavaScriptをResponse.Write()メソッドで生成する方法もありますが

ASP.NETには、Pageクラスに
RegisterClientScriptBlock()メソッドと
RegisterStartupScript()メソッドが用意されています。


コード:
If Not IsClientScriptBlockRegistered("clientScript") Then
   RegisterClientScriptBlock("clientScript", strBuilder.ToString)
End If

RegisterStartupScript("startup", strBuilder.ToString)



Happy Programming
Akio Kasai
Earth
会議室デビュー日: 2002/06/11
投稿数: 14
投稿日時: 2002-07-16 10:53
Dr ADO.NETさんレスありがとうございました。

ためしに使ってみますと、うまくいきました。
こちらのほうがメリットがありそうなので、もうすこし調べて
使っていきたいと思います。

以上、またスレしたときはよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)