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

Posted

技术标签:

【中文标题】Worklight 6.2:无法在 windows phone 8 环境中添加多个 js 文件【英文标题】:Worklight 6.2 : Unable to add multiple js files in windows phone 8 environment 【发布时间】:2014-09-02 11:06:46 【问题描述】:

我使用适用于 androidios 和 Windows Phone 8 平台的 Worklight 创建了一个多页应用程序。在该应用程序中,我必须在某些页面中包含多个 js 文件,这会在 Windows phone 8 环境中产生问题。

问题:如果我包含多个 js 文件,在 Windows phone 8 环境中只加载第一个 js 文件。

我使用 Worklight 多页应用程序创建了一个示例应用程序来演示该问题。

在Page1.html中,我包含了2个js文件。

<script>
    $.getScript(path + "js/Page1.js");
    $.getScript(path + "js/Sample.js");
</script>

<p>
    Currently <b>Page1.html</b> page is loaded.
</p>

<input type="button" class="appButton" value="Show Alert" onclick="alertHello();" />
<input type="button" class="appButton" value="SimpleDialog from Page1" onclick="currentPage.buttonClick();" />
<input type="button" class="appButton" value="Insert Fragment" onclick="currentPage.insertFragment();" />

<div id="FragmentsDiv"></div>

<input type="button" class="appButton" value="BACK" onclick="currentPage.back();" />

sample.js 文件中的代码

$(document).ready(function()
    alert("sample.js loaded");
);

function alertHello()

    alert("hello");

当我尝试在 Windows phone 8 环境中运行该应用程序时,只有 Page1.js 正在加载。

重现错误的步骤

    点击“加载Page1.html”

    点击“显示警报”

当我在 windows phone 8 模拟器/设备中尝试时,我没有收到警报“你好”。

我们将不胜感激任何解决问题的帮助。

【问题讨论】:

您是否查看了 IBM Worklight 提供的多页示例应用程序,该应用程序演示了应该如何为 Windows Phone 8 完成此操作?好好看看代码:ibm.com/developerworks/mobile/worklight/… 是的,我只使用了多页示例应用程序。从文档开始,windows phone 8 应用程序的路径不同,加载脚本时使用“路径”变量包含该值。我的问题是,第一个 js 文件正在加载,但第二个没有。 示例正在运行,因此如果您的示例无法正常运行 - 请提供可调试的完全运行的 Worklight 项目,否则提供的代码块不够。 示例中只有一个js文件。如果我们再包含一个,则不会加载第二个文件。 项目的文件结构是什么?该页面是位于 index.html 旁边还是位于 pages\ 文件夹内?如果您从 pages\ 文件夹(从中加载第一页)加载第二页,则路径不再是相同的路径,我认为对于第二页,您需要添加“..”才能返回进入 pages 文件夹以找到第二页。 【参考方案1】:

您需要等待第一个脚本完成才能加载第二个脚本。 getScript 接受第二个参数,你可以传递一个函数,或者你可以使用 promise,比如和 chain 与 done() 函数

<script>
  $.getScript(path + "js/Page1.js").done(function()
    $.getScript(path + "js/sample.js");
  );
</script>

我自己试过了,效果很好

还请注意,在您的代码问题中,使用带有大写“S”的 Sample.js,在您的 cmets 中,您提到带有小写“s”的 sample.js。我在文件名和代码中都使用了 sample.js。

【讨论】:

谢谢卡洛斯。然而,我对 Windows 移动开发存在这样的限制感到失望,我们必须采用这种解决方法。可重用性在这里被折腾了。【参考方案2】:

在 Windows Phone 8 模拟器(通过 Visual Studio 12)中测试您的示例项目,单击第 1 页按钮后,我收到一条警告说“sample.js 已加载”。然后我点击了 Show Alert 按钮,得到了一个提示“你好”。

无法复制... 您的示例在 Worklight Studio 6.2.0.00-20140818-1919(与您的版本和构建相同)中运行良好。

也许您应该编辑您的问题并提供您已采取的完整步骤以重现此问题;也许你错过了一步。

我做了什么:

    导入项目 右键单击 Windows Phone 8 文件夹 > 运行方式 > Visual Studio 项目 VS 打开 > 点击“播放”按钮 WP8 模拟器打开 > 做了上述操作

【讨论】:

即使我也见过同样的问题。只是无法弄清楚出了什么问题,可能我有点偏见。但除了这个不加载的问题,这种导入javascript文件的风格变化其实是让我们头疼的问题。因为现在,我们已经用 '$.script(..)' 覆盖了所有的 html 页面,只为 windows 导入。 '

以上是关于Worklight 6.2:无法在 windows phone 8 环境中添加多个 js 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Worklight 6.2、6.3 中无法获得 HTTP 响应

在 Worklight 6.2 中拨打电话

IBM Worklight 6.2:JMX 配置错误。无法获取 MBean

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

谷歌地图无法在 iPhone/iPad worklight 6.2 应用程序上运行

IBM Worklight 6.2:JMX 配置错误。无法获取 MBean 原因:“无法识别的 SSL 消息,明文连接