2

我想在 Websharper 中为整个页面(或最接近我的任何内容)获取用户的键盘输入,但我看不到任何好的方法。

我尝试了一些类似的东西

JQuery.Of("document").Keyup(fun _ _ -> Window.Self.Alert("boo"))

但我一直遇到很多NotImplementedExceptions. 这些真的没有落实吗?还是我遇到了一些奇怪的边缘情况,因为我违反了规定?

更新:

我已经从 nuget 安装了 2.4.85.235 版本,如果这对任何人都意味着什么的话。我也在使用 VS 2012。

我还使用 VS 2010 中的新站点站点模板站点进行了测试,我看到了同样的情况。我已经从 WebSharper 站点安装了最新的软件包。

4

1 回答 1

5

确保您没有调用未在服务器上实现的客户端方法。如果是这种情况,将客户端和服务器代码分开,显示相关元素并通过 Web 控制机制调用 JavaScript,并使用“html”、“body”或 Dom.Document.Current 作为选择器。以下是每次按下回车键时显示警报的示例:

module Client =

    open IntelliFactory.WebSharper
    open IntelliFactory.WebSharper.Html
    open IntelliFactory.WebSharper.JQuery

    [<JavaScriptAttribute>]
    let paragraph () =
        P [Text "Press the Enter key to display an alert box."]
        |>! OnAfterRender (fun x ->
            JQuery.Of("html").Keydown(fun _ event ->
                match event.Which with
                    | 13 -> JavaScript.Alert "Enter key was pressed."
                    | _  -> ()).Ignore)

    type ParagraphViewer () =
        inherit Web.Control()

        [<JavaScript>]
        override this.Body = paragraph () :> _
于 2012-10-28T09:58:26.530 回答