- - PR -
VB.NETで作ったユーザーコントロール上のボタンをクリックしたことを、HTML(JavaScript)で検知したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-30 09:56
VB.NETでユーザーコントロールを作成し、それをブラウザ上で動作させるアプリを作成しています。
その中で、ユーザーコントロール上でボタンを押した、ということをJavaScriptで検知する必要が出てきました。 いろいろ検索してみたところ、 「VB側でイベントを定義しRaiseEventでイベントを発生させる。Javascriptでそれをキャッチできる。」 という説明をされている箇所がありました。 そこで次のようなコードを作ったのですが、ボタンをクリックしてもJavaScript側で検知できませんでした。 書き方が悪いのか、そもそもの前提が間違っているのか、どなたかご教示いただけますでしょうか。 よろしくお願いいたします。 1)VB.NETで作ったユーザーコントロール側
2)HTML側
| ||||||||
|
投稿日時: 2007-10-30 14:45
出典はどこですか? | ||||||||
|
投稿日時: 2007-10-31 09:38
まるくさん
ありがとうございます。 出典は、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19873&forum=12&8 になります。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-10-31 11:40
この辺が参考になりませんかね。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconraisingeventshandledbycomsink.asp | ||||||||
|
投稿日時: 2007-10-31 20:01
IEや.Netのセキュリティーで実行できてないとかありませんか?
・[HOWTO] マネージ Visual Basic .NET イベントを Internet Explorer スクリプトでシンクする方法 http://support.microsoft.com/kb/316516/ja | ||||||||
|
投稿日時: 2007-11-01 20:39
まるくさん、mitoさん
ありがとうございます。 やってみてまた報告します。 | ||||||||
|
投稿日時: 2007-11-06 11:34
結論を先に言いますとうまくいかなかったため、代案を採用しました。
まず、mitoさんが教えてくれたリンクから HOW TO: Sink Managed C# Events in Internet Explorer Script という記事を見つけました。 そのものずばりだったので、言語はC#でしたがまったくそのとおりにコードを作成しました。 しかし、JScriptで記述されたイベントハンドラが呼び出されませんでした。 また、同様にcaspol -s off でフレームワークのセキュリティがoffにできるとのことでしたので、やってみましたが挙動は変わりませんでした。 検証できる時間もなくなってしまいましたが、現時点でJavaScriptからVB.NETのプロパティが読めることが分かっているので、結局JavaScriptのsetTimeoutで数ミリ秒ごとにプロパティを読み出すことで代用することにしました。 解決できずに申し訳ありません。 ありがとうございました。 | ||||||||
|
投稿日時: 2007-11-06 20:02
動きませんでしたか・・・
私の環境では以下でJavascriptが動きます。何が違うのでしょうか? MyControl1.vb <ComClass(MyControl1.ClassId, MyControl1.InterfaceId, MyControl1.EventsId)> _ Public Class MyControl1 Public Const ClassId As String = "bbd7c37b-bea0-4dc6-818a-xxxx" Public Const InterfaceId As String = "94330c5f-40bc-4153-b930-xxxx" Public Const EventsId As String = "c8b99ba9-f102-445c-badc-xxxx" Public Event MyButtonClick() Private Sub Button1_Click(略) Handles Button1.Click RaiseEvent MyButtonClick() End Sub Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 End Sub End Class Test.htm <HTML> <HEAD> <SCRIPT TYPE="text/javascript" For="MyCtl" Event="MyButtonClick"> alert("OK"); </SCRIPT> </HEAD> <BODY> <OBJECT ID="MyCtl" CLASSID="clsid:bbd7c37b-bea0-4dc6-818a-xxxx" WIDTH="186" HEIGHT="146"> </BODY> </HTML> 環境: Win2KSp4+IE6.0Sp1 VS2005Sp1(HTMファイルはローカルに置いてます) |