【问题标题】:Zafir.UI.Next not working with IE11Zafir.UI.Next 不适用于 IE11
【发布时间】:2017-04-24 13:02:02
【问题描述】:

从 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。

这有什么问题?有bug吗?

非常感谢任何提示。

编辑:

我在 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:What is this.parentElement?

【问题讨论】:

    标签: websharper websharper.ui.next


    【解决方案1】:

    显然这已在 WebSharper 4 beta-7 中得到修复:https://github.com/intellifactory/websharper.ui.next/issues/117

    顺便说一句,我在后期构建中使用它来更正生成的脚本:

    powershell -c "gci $(ProjectDir)Scripts\WebSharper\*.js -recurse | foreach {(gc $_ | foreach {$_ -replace 'parentElement', 'parentNode'}) | sc $_}"
    

    非常感谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2019-06-22
      • 2017-10-01
      • 1970-01-01
      相关资源
      最近更新 更多