1

我们最近开始在 Windows 8 平板电脑上测试我们已经在 Android、IOS 和 WP8 上运行的应用程序(即 W8 桌面应用程序)

当我们尝试运行它时,应用程序立即启动并关闭。进一步调试,我们发现 WLJQ.js 抛出了一个异常(见图),更准确地说,在第 5964 行附加:function()

考虑到异常细节并经过一些调查将我们引导至此链接http://msdn.microsoft.com/en-us/library/windows/apps/Hh767331.aspx后,我们找到了破解 WLJQ.js 的解决方案文件,它使用 MS API 跳过注入验证。

在此处输入图像描述

到目前为止一切顺利,但是我非常有信心更改内部工作灯文件不是合适的解决方案,因此我们所做的代码可能会破坏其他平台。

基本上我们在 WLJQ.js 文件中改变了这个:

append: function() {
  return this.domManip(arguments, true, function( elem ) {
      if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      this.appendChild( elem );
      }
   });

这样

append: function() {
    return this.domManip(arguments, true, function( elem ) {
        if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      var self = this;
            MSApp.execUnsafeLocalFunction(function () {
                self.appendChild(elem);
            });

软件版本:Worklight 6.0.0 Visual Studio 2012

关于如何解决它的任何线索?

4

1 回答 1

2

您在为您的应用程序使用 Worklight 的 jQuery 吗?我不会更改 WLJQ.js,而是删除以下行:

<script>Window.$ = Window.jQuery = WLJQ</script>

并用您的应用程序中显式加载的 jQuery 替换它。jQuery 2.0 应该是 Windows 8 准备好的,所以我会从它开始。

你没有说你是否使用 jQuery mobile。即使您使用的是 jQuery 2.0,这也会导致问题。但至少如果您使用应用程序中的 jQuery 副本,修改它不会导致修改 WLJQ.js 会出现的问题。

于 2013-10-29T19:19:25.010 回答