【问题标题】:Capturing keyboard input Websharper捕获键盘输入 Webshaper
【发布时间】:2012-10-28 21:35:58
【问题描述】:

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

我尝试了一些类似

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

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

更新:

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

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

【问题讨论】:

    标签: f# websharper


    【解决方案1】:

    确保您没有调用未在服务器上实现的客户端方法。如果是这种情况,将客户端和服务器代码分开,显示相关元素并通过 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 () :> _
    

    【讨论】:

    • 所有这三个选择器都会抛出一个NotImplementedException
    • 您似乎正在调用未在服务器上实现的客户端方法(在本例中为 jQuery)。显示涉及的元素并使用 Web 控制机制调用 JavaScript。
    • 对,这是一个很好的解释:)。您介意用您的意思示例更新您的答案,以便我接受吗?
    • 完成,对于大量使用 jQuery 的较大样本,您可以查看slideshow demo
    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多