0

このJavaScript関数をインラインで書き留めようとしました:

function WhichKeyPress(e) {
 if (!e) {
  //if the browser did not pass the event 
  //information to the function, 
  //we will have to obtain it from the 
  //event register
  if (window.event) {
       //Internet Explorer
        e = window.event;
     } else {
       //total failure, we have no 
      //way of referencing the event
       return;
     }
   }
   if (typeof (e.keyCode) == 'number') {
      //DOM
      e = e.keyCode;
    } else if (typeof (e.which) == 'number') {
      //NS 4 compatible
      e = e.which;
    } else if (typeof (e.charCode) == 'number') {
     //also NS 6+, Mozilla 0.9+
      e = e.charCode;
    } else {
      //total failure, we have no way of obtaining the key code
      return;
    }
}

次のようになりました。

Me.Attributes.Add("onkeydown","var evt; if(!e){ evt = window.event;}else{return;} if(typeof(evt.keyCode == 'number'){//do something}else if....."}

そして、それは続きます。言うまでもなく、うまくいきません。次のような他のインライン JavaScript 関数を試しました。

Me.Attributes.Add("onkeydown","if(event.keyCode == 13){return event.keyCode = 9;} ")

できます。しかし、私がこれを行うと:

Me.Attributes.Add("onkeydown","var cod = event.keyCode; if(cod == 13){return cod = 9;})

うまくいきません。

javascript関数全体をインラインで本当に書くことができますか? 変数が宣言され、他のすべてが?

編集: @millimoose が提供したリンクを読みましたが、vs2005 の dll で外部の .js ファイルを使用しようとしていますが、成功していません。これまでに行ったことがないことは次のとおりです。

1) dll ソリューションに js ファイルを含む「Scripts」フォルダーを作成しました。

2) ビルド アクションを「EmbeddedResource」に設定します。

3) OnPreRender メソッドを次のように上書きしました。

Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
                Page.ClientScript.RegisterClientScriptResource(Me.GetType(), "webControlesUES.Scripts.EnterToTab.js")
                Page.ClientScript.RegisterStartupScript(Me.GetType(), "EnterToTab", "teste()", True)
End Sub

4) Render メソッドで、これを追加しました:

Me.Attributes.Remove("onkeydown")
Me.Attributes.Add("onkeydown", " teste();")
If Me.TextMode = Web.UI.WebControls.TextBoxMode.MultiLine Then
     Me.Attributes.Remove("onkeydown")
End If

5)これを私のAssemblyInfo.vbに追加しました

<Assembly: System.Web.UI.WebResource("webControlesUES.Scripts.EnterToTab.js", "application/x-javascript")>

6) ソリューションを構築し、テスト用の dll を追加しました。

しかし、それは機能していません。私はここで何かを忘れていますか?

4

1 に答える 1