javascript - HTML 文件在 Electron 中的加载方式与在浏览器窗口中的加载方式不同

标签 javascript jquery html css

我正在尝试编写一个程序来使用 openweathermap.org API 显示天气数据,同时使用 MaterializeCSS 使其看起来漂亮漂亮。但是,目前我的代码在 Electron 中的加载方式似乎与在我的网络浏览器中加载的方式不同。它在网络浏览器(最新版本的谷歌浏览器)中正​​常工作,而在 Electron 中,按钮和动画根本无法正常工作。没有动画,不同的选项卡显示不正确。单击时,选项卡不执行任何操作,选项卡的所有内容会立即显示。见下文。

/image/PdR4z.png

文件正确显示在浏览器中,如下所示。

/image/kAYpS.png

这是 index.html 的代码:

const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')
const functions = require('./functions')

let win;

function createWindow () {
    win = new BrowserWindow({width: 1280, height: 720});

    win.loadURL('file://' + __dirname + '/index.html');

    functions.getData(function(data) {
        console.log(data);
    });

    //win.webContents.openDevTools()

    win.on('closed', () => {
        win = null
    });
}

app.on('ready', createWindow);

app.on('window-all-closed', () => {
    // mac stuff
    if (process.platform !== 'darwin') {
        app.quit()
    }
});

app.on('activate', () => {
    // more mac stuff
    if (win === null) {
        createWindow()
    }
});
// materializecss.com for the the css used.
<!DOCTYPE html>
<html>
    <head>
        <!--  micron.js  -->
        <link href="https://unpkg.com/webkul-micron@1.0.4/dist/css/micron.min.css" type="text/css" rel="stylesheet">
        <!--             -->
        <!-- materialize -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css">
        <link rel="stylesheet" href="/css/style.css">
        <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
        <!--             -->
        <!--   scripts   -->
        <script type="text/javascript" src="./functions.js"></script>
        <!--             -->
        <meta charset="utf-8">
        <title>Material Weather</title>
    </head>
    <body>
        <nav class="nav-extended light-blue">
            <div class="nav-wrapper light-blue">
                <a href="#" class="brand-logo center light-blue">Material Weather</a>
                <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
            </div>
            <div class="nav-content light-blue">
                <ul class="tabs tabs-fixed-width light-blue">
                    <li class="tab"><a href="#today" class="white-text">Today</a></li>
                    <li class="tab"><a href="#tomorrow" class="white-text">Tomorrow</a></li>
                    <li class="tab"><a href="#10day" class="white-text">10 Day</a></li>
                </ul>
            </div>
        </nav>
        <div id="today" class="col s12">Today</div>
        <div id="tomorrow" class="col s12">Tomorrow</div>
        <div id="10day" class="col s12">10 Day</div>
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
        <script src="https://unpkg.com/webkul-micron@1.0.4/dist/script/micron.min.js" type="text/javascript"></script>
    </body>
</html>

如果您需要任何其他信息,请随时询问。提前感谢您的宝贵时间。

最佳答案

问题是 jQuery 没有在 Electron 窗口中正确加载。在互联网上翻找了几个小时试图找到解决方案之后,这就是我想出的办法。

将其放在代码的脚本部分的开头:

<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>

将其放在脚本部分的末尾:

<script>if (window.module) module = window.module;</script>

From what I've read ,它实质上强制窗口使用导入的每个模块,这是对其他类似问题的常见修复。

所以,我的代码最后看起来像这样:

    <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script> <!-- makes jquery actually work -->
    <!-- scripts -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
    <script src="https://unpkg.com/webkul-micron@1.0.4/dist/script/micron.min.js" type="text/javascript"></script>
    <!--         -->
    <script>if (window.module) module = window.module;</script> <!-- makes jquery actually work -->```

关于javascript - HTML 文件在 Electron 中的加载方式与在浏览器窗口中的加载方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48633739/

相关文章:

javascript - 带有 json url 的 ionic 无限列表滚动

javascript - 为什么我的继承不起作用?

jquery - 可能/如何使用 jquery.tabs() 将水平选项卡嵌套在垂直选项卡下?

jquery - 先加载页面(css、html),再渲染

javascript - 如何从点击 javascript 中的一行中排除 <a> 标签?

html - 在 Rails 中覆盖 Zurb Foundation css

javascript - JQuery-DataTables-ColumnFilter 过滤问题

javascript - 将 @types 中的类型分配给本地代码?

jquery获取列中表格单元格的值,将值相加并在页面上输出

jquery - IE7 CSS/Jquery 错误(负边距和鼠标悬停突出显示)