F# WebSharper Framework を使用して JQuery Mobile サイトを作成しようとしています。WebSharper の用語では、Sitelet によって提供される JQueryMObile コントロールを使用してページレットを作成しました。すべてがコンパイルされて実行されますが、問題は生成される html にあります。
私が宣言したページ (simplePage) は明らかにマークアップに存在し、それを表示するために JQueryMobile css クラスでマークされui-active
ています。ただし、ページでもあるがアクティブな css クラスでマークされていない div で囲まれているため、非表示になっています。したがって、この div 内の私のページは非表示になっています。これを含むページ div を作成していません。HTMLヘッドにJQueryMobileスクリプトをロードすることの副作用のようです。どうすればそれを取り除くことができますか?
http://websharper.com/samples/JQueryMobileから例を取り上げました。私は WebSharper バージョン 2.5.125.62 と WebSharper.JQueryMobile バージョン 2.5.4.198 を使用しています。関連するコード ファイルが 1 つあり、その後に生成された html が続きます。
主要:
open IntelliFactory.Html
open IntelliFactory.WebSharper
open IntelliFactory.WebSharper.Html
open IntelliFactory.WebSharper.JQuery
open IntelliFactory.WebSharper.Sitelets
type Action = | Home
[<JavaScript>]
module MyJQueryContent =
let Main() =
JQuery.Mobile.Mobile.Use()
let page = Div [
Id "simplePage"
HTML5.Attr.Data "role" "page"
HTML5.Attr.Data "url" "#simplePage"
] -< [
Div[Text "content"]
]
Div [page]
|>! OnAfterRender (fun _ -> JQuery.Of(page.Body)
|> JQuery.Mobile.JQuery.Page
|> ignore
JQuery.Mobile.Mobile.Instance.ChangePage(JQuery.Of(page.Body)))
[<Sealed>]
type MyJQueryMobileEntryPoint() =
inherit Web.Control()
[<JavaScript>]
override this.Body = MyJQueryContent.Main() :> _
module Pages =
let HomePage =
PageContent <| fun context ->
{ Page.Default with
Title = Some "Index"
Body = [IntelliFactory.Html.Tags.Div[new MyJQueryMobileEntryPoint()]] }
[<Sealed>]
type Website() =
interface IWebsite<Action> with
member this.Sitelet = Sitelet.Content "/" Home Pages.HomePage
member this.Actions = [Home]
type Global() =
inherit System.Web.HttpApplication()
member g.Application_Start(sender: obj, args: System.EventArgs) =
()
[<assembly: Website(typeof<Website>)>]
do ()