Worklight 应用程序在 Windows 8 上崩溃

Posted

技术标签:

【中文标题】Worklight 应用程序在 Windows 8 上崩溃【英文标题】:Worklight app crashes on Windows 8 【发布时间】:2013-06-24 09:30:07 【问题描述】:

我正在使用 Worklight 5.0.6 开发应用程序。该应用程序面向平板电脑(iosandroid 和 Windows)。该应用程序在 iOS 和 Android 上运行良好,但我无法让它在 Windows 8 上正常运行。当我单击链接时,该应用程序崩溃。以下是错误消息的一部分:

"html1701: Unable to add dynamic content '  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>'. A script attempted to inject dynamic content or elements previously modified dynamically that might be unsafe. For example, using the innerHTML property to add script or malformed HTML will generate this exception. Use the toStaticHTML method to filter dynamic content or explicitly create elements and attributes with a method such as createElement. For more information, see http://go.microsoft.com/fwlink/?LinkID=247104."

应用程序应该在单击链接时注入一个 html 片段。我正在使用以下函数将 html 注入到元素中:

function loadPartial(path, elementId)

    $.get(path, function (data) 
        $(elementId).html(data).trigger("create");
        $("#my-navbar > ul").removeClass("ui-grid-a");
        if (!hideDuringFocus)
        
            $("[data-role=header]").fixedtoolbar( hideDuringFocus: "" );
            $("[data-role=footer]").fixedtoolbar( hideDuringFocus: "" );
        
    );


function loadPartialWithFunction(path, elementId, aFunction)

    $.get(path, function (data) 
        $(elementId).html(data).trigger("create");
        $("#my-navbar > ul").removeClass("ui-grid-a");
        if (!hideDuringFocus)
        
            $("[data-role=header]").fixedtoolbar( hideDuringFocus: "" );
            $("[data-role=footer]").fixedtoolbar( hideDuringFocus: "" );
        
        aFunction();
        );
 

我在代码中犯了错误吗?任何帮助,将不胜感激。如果需要更多信息或源代码,请告诉我。

【问题讨论】:

【参考方案1】:

问题已解决,谢谢。我必须用 MSApp.execUnsafeLocalFunction 包装代码,所以它看起来像这样:

function loadPartialWithFunction(path, elementId, aFunction)

    $.get(path, function (data) 
        MSApp.execUnsafeLocalFunction(function()
            $(elementId).html(data).trigger("create");
            $("#my-navbar > ul").removeClass("ui-grid-a");
            if (!hideDuringFocus)
            
                $("[data-role=header]").fixedtoolbar( hideDuringFocus: "" );
                $("[data-role=footer]").fixedtoolbar( hideDuringFocus: "" );
            
            aFunction();
       );
    );
  

【讨论】:

这是很好的信息。谢谢。请尽可能标记为已回答。【参考方案2】:

这是 Win8 Metro 上的 jQuery 问题。 Metro 应用程序具有动态内容限制,需要首先绕过这些限制。这是一个堆栈溢出问题,对此问题有很多答案:

Using jQuery with Windows 8 Metro javascript App causes security error

【讨论】:

以上是关于Worklight 应用程序在 Windows 8 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.2:无法在 windows phone 8 环境中添加多个 js 文件

将 windows phone 8.0 phonegap 应用程序从 worklight 6.0 移动到 worklight 6.1

无法在 IBM Worklight 的 windows phone 8 中运行混合应用程序

Worklight Studio 真的支持 Windows 8.1 吗?

IBM Worklight 6.1 - 来自推送通知的磁贴徽章从未在 Windows Phone 8 上清除

Worklight 6.1 部署到 Windows Phone 8:AUTHENTICATION_ERROR,deviceId null