HTML5 / JS应用程序没有调用index.html中列出的.js文件之一。一旦.js文件转换为UTF8

时间:2017-10-15 20:17:56

标签: javascript html5 cordova utf-8

我在RPG Maker MV中开发了一款游戏。这是一个javascript前端,允许我开发块/临时编程,然后由RPG Maker MV后端导出为html5 / .js文件的ANSI / UTF8混合。换句话说,我对javascript中的编程一无所知,这可以帮助我调试问题,如上所述,上面已经完成了。

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

问题: 一旦我的应用程序使用WinJS或Cordova在Visual Studio 2017(所有内容的最新版本)中为UWP目标打包,某个.js文件(我认为是plugins.js)没有被使用(称为?),使得应用程序无法正常运行以其包装形式。我通过打包应用程序缩小了这一范围,而没有将.js文件转换为UFP的UTF8,并且运行正常。一旦我将.js文件转换为UTF8并再次打包它,RPG Maker MV游戏后端的核心就可以了,但我添加的附加插件无效。

我与之谈论此问题的每个人都不愿意,因为他们不知道RPG Maker MV是什么或者它是如何运作的。我不明白为什么,因为它仍然只是Javascript,除了我花费10分钟以外的任何人都会得到更远的调试只是因为你知道你在做什么,我没有。我正在寻求理解但是我在一楼并且自从五月开始调试以来没有取得太大进展。

我在RPG Maker MV论坛上发布了这个,视觉工作室社区,联系了RPG Maker MV支持(他们不支持UWP),并试图在codementor.io上找人帮助我。我还在工作中询问我们有数百名软件开发人员,但这个问题并不适合广大受众。

如果你能帮助我,你会得到我自己以及至少3位关于我在Windows商店发布的破损游戏的评论者的感谢。你将成为历史上的标志性英雄,就像我游戏中的那个。嗯,实际上这是一个具有讽刺意味的英雄。

请将我的HTML5应用的.js文件从ANSI转换为UTF8 BOM后,如何加载此plugins.js文件?     //     // main.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

3 个答案:

答案 0 :(得分:1)

我解决了这个问题。

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

将标志更改为script.async = true;只需要将打包的运行时环境(UWP应用程序的IE)运行起来就可以了。

更长的答案,我通过一直在正确的位置和听到异步的结合发现这一点,再加上对于函数可能出错的地方失眠的思考。这也是由于对这里的异步进行了一些研究:https://www.html5rocks.com/en/tutorials/speed/script-loading/

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

答案 1 :(得分:0)

将你的所有脚本包括(除了你的plugins.js)移动到首先加载它们的标题中,然后你可以在主体中执行你的plugins.js,这会使它稍后加载。

<!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>
                <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/main.js"></script>
    </head>
    <body style="background-color: black">
<script type="text/javascript" src="js/plugins.js"></script>
    </body>
</html>

这将使插件成为最后加载的js,因为它在主体中加载,它在标题后加载,它会回答您的问题。很高兴能够提供帮助。

答案 2 :(得分:0)

您可以尝试&lt; script&gt;以下正确加载脚本的属性:

<!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 defer type="text/javascript" src="js/plugins.js"></script>
        <script defer type="text/javascript" src="js/main.js"></script>
    </body>
</html>