1

Zafir.UI.Next バージョン 4.0.128.30.beta6 以降では、IE11 で jQuery.Deferred 例外が発生します。

jQuery.Deferred exception: Die Eigenschaft "insertBefore" eines undefinierten oder Nullverweises kann nicht abgerufen werden. TypeError: Die Eigenschaft "insertBefore" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
   at DomUtility.InsertAt (WebSharper.UI.Next.js:423:96)
   at Docs$1.InsertNode (WebSharper.UI.Next.js:3933:3)
   at Docs$1.InsertDoc (WebSharper.UI.Next.js:3926:3)
   at Docs$1.LinkPrevElement (WebSharper.UI.Next.js:3879:3)
   at Doc.RunBetween (WebSharper.UI.Next.js:5452:3)
   at Doc.RunBefore (WebSharper.UI.Next.js:5447:3)
   at ReplaceInDom (WebSharper/WebSharper.UI.Next.js:3942:4)
   at a (WebSharper.Main.js:1264:7)
   at Anonymous function (WebSharper.Main)
SCRIPT5007: Die Eigenschaft "insertBefore" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
jquery-3.1.1.js (3855,3)

プロジェクトのサーバー部分は次のようになります。

public class Server
{
    [Website]
    public static Sitelet<object> Main => new SiteletBuilder().With<string>
    ((ctx, endpoint) => Content.Page(
        Head:
            doc(
                link(attr.href("Content/bootstrap.css"), attr.rel("stylesheet"), attr.type("text/css")),
                script(attr.src("Scripts/jquery-3.1.1.js"), attr.type("text/javascript")),
                script(attr.src("Scripts/jquery.stickytableheaders.js"), attr.type("text/javascript"))
            ),
        Body:
            doc(
                client(() => Client.Main(endpoint))
            )
    ).Install();

そして、クライアントは次のようになります。

public static IControlBody Main(string endpoint) {return div( ...);}

これは、Chrome や Edge などで問題なく動作します。

これの何が問題なのですか?バグはありますか?

どんなヒントでも大歓迎です。

編集:

バージョン 4.0.132.34-beta6 の WebSharper.UI.Next.js で問題のあるコードを特定しました。

これは EGDE と Chrome の両方で機能しますが、IE11 では機能しません。

Docs$1.LinkPrevElement=function(el,children)
 {
  var v;
  v=Docs$1.InsertDoc(el.parentElement,children,el);
 };

コードを次のように変更しました。

Docs$1.LinkPrevElement=function(el,children)
 {
  var v;
  v=Docs$1.InsertDoc(el.parentNode,children,el);
 };

これは、EDGE、Chrome、および IE11 で機能します。

誰かがこれに光を当ててもらえますか?

編集2:

これは、parentElement の使用を思いとどまらせます: this.parentElementとは何ですか?

4

1 に答える 1