javascript - 一旦 .js 文件转换为 UTF8,HTML5/JS 应用程序不会调用 index.html 中列出的 .js 文件之一

标签 javascript html cordova utf-8

我在 RPG Maker MV 中开发了一款游戏。这是一个 javascript 前端,它允许我开发 block /临时编程,然后由 RPG Maker MV 后端将其导出到 HTML5/.js 文件的 ANSI/UTF8 混合体中。换句话说,我对使用 javascript 进行编程一无所知,这可以帮助我按照上述方式调试问题。

最简单的描述: 在我的 HTML5 应用程序的 .js 文件从 ANSI 转换为 UTF8 BOM 后,如何加载此 plugins.js 文件?

问题: 一旦我的应用程序在 Visual Studio 2017(最新版本的所有内容)中使用 WinJS 或 Cordova 打包用于 UWP 目标,某个 .js 文件(我相信是 plugins.js)未被使用(调用?)使应用程序无法正常运行以其包装形式。我通过打包应用程序而不将 .js 文件转换为 UWP 的 UTF8 来缩小范围,它运行良好。一旦我将 .js 文件转换为 UTF8 并再次打包,RPG Maker MV 游戏后端的核心就可以工作,但我添加到它的额外插件无法工作。

与我谈论这个问题的每个人都回避它,因为他们不知道 RPG Maker MV 是什么或它是如何工作的。我不明白为什么,因为它仍然只是 Javascript,而且除了我之外的任何人只要花 10 分钟就可以进一步调试,因为你知道自己在做什么而我不知道。我正在寻求理解,但我在底层,自 5 月开始调试以来没有取得太大进展。

我在 RPG Maker MV 论坛、visual studio 社区上发布了这个,联系了 RPG Maker MV 支持(他们不支持 UWP),并试图在 codementor.io 上找人帮助我。我还在工作中四处询问,我们实际上有数百名软件开发人员,但这个问题并没有吸引广泛的受众。

如果你能帮助我,你会感谢我自己和至少 3 位评论我在 Windows 商店上发布的损坏游戏的人。你将成为一个时代的标志性英雄,就像我游戏中的英雄一样。好吧,实际上这是一个具有讽刺意味的英雄。

请问,一旦我的 HTML5 应用程序的 .js 文件从 ANSI 转换为 UTF8 BOM,我该如何加载这个 plugins.js 文件? // //主.js //

PluginManager.setup($plugins);

window.onload = function() {
    SceneManager.run(Scene_Boot);
};

和index.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
        <meta name="viewport" content="user-scalable=no">
        <link rel="icon" href="icon/icon.png" type="image/png">
        <link rel="apple-touch-icon" href="icon/icon.png">
        <link rel="stylesheet" type="text/css" href="fonts/gamefont.css">
        <title>Likely Story RPG</title>
    </head>
    <body style="background-color: black">
        <script type="text/javascript" src="js/libs/pixi.js"></script>
        <script type="text/javascript" src="js/libs/pixi-tilemap.js"></script>
        <script type="text/javascript" src="js/libs/pixi-picture.js"></script>
        <script type="text/javascript" src="js/libs/fpsmeter.js"></script>
        <script type="text/javascript" src="js/libs/lz-string.js"></script>
        <script type="text/javascript" src="js/libs/iphone-inline-video.browser.js"></script>
        <script type="text/javascript" src="js/rpg_core.js"></script>
        <script type="text/javascript" src="js/rpg_managers.js"></script>
        <script type="text/javascript" src="js/rpg_objects.js"></script>
        <script type="text/javascript" src="js/rpg_scenes.js"></script>
        <script type="text/javascript" src="js/rpg_sprites.js"></script>
        <script type="text/javascript" src="js/rpg_windows.js"></script>
        <script type="text/javascript" src="js/plugins.js"></script>
        <script type="text/javascript" src="js/main.js"></script>
    </body>
</html>

根据以下评论更新: 好的,我现在正在上传一个 zip 文件夹 (2.6 gb),其中包含您或任何人可能需要的所有内容。这完美地复制了这个问题,并且游戏代码的复杂性要低得多。告诉它不起作用的方法:在 visual studio 中调试时,应用程序在左下角有图片覆盖。用鼠标点击应该会弹出一个菜单。在打包的应用程序中,图片显示但不运行菜单事件。 1drv.ms/f/s!AhExycO0yDOZhsdmVSBkhw9t_HNn3w

更新:看起来这是一个非常相似的问题,没有解决方案:Grunt and UglifyJS in Windows app development - UTF8 problems

最佳答案

我解决了这个问题。

简单的回答,在文件 rpg_manager.js 中有一段代码,其中“pluginmanager”作为一个函数被调用。这使用标志 script.async = false;

将标志更改为 script.async = true;这就是让打包的运行时环境(即用于 UWP 应用程序的 IE)工作所需的一切。

较长的答案,我发现这个是通过在正确的地方和听说异步的结合,加上对函数可能出错的地方的不眠思考的结合。这也是由于在这里发现了一些关于异步的研究:https://www.html5rocks.com/en/tutorials/speed/script-loading/

我相信这解释了为什么 android 的构建没有出现问题,并且调试也没有问题,因为它是不同的运行时。

关于javascript - 一旦 .js 文件转换为 UTF8,HTML5/JS 应用程序不会调用 index.html 中列出的 .js 文件之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46759578/

相关文章:

javascript - 我可以永久更改 html 按钮的值和标签吗?

javascript - 问题导入 polymer 元素

javascript - javascriptreact.json 文件中的自定义 react 代码片段在 vscode 中不起作用

css - 实现插件时如何解决多个CSS文件之间的冲突?

android - Cordova 返回顶部和底部黑色区域的风景照片

javascript - 组件函数仅适用于第一个组件 Vue.js

javascript - 如何将方法应用于整个对象文字?

html - 如何更改 Polymer 中铁图标的背景颜色?

android - Ajax 请求不适用于 cordova android 应用程序

cordova - 使用 Cordova : cordova\node_modules\cordova-common\src\superspawn. js:169:23 编译 Ionic 3 时出错