使用Electron和Asar的包装应用程序

时间:2016-01-28 12:53:40

标签: javascript webview electron asar adapt

我有这个奇怪的问题,我正在努力让网站脱机工作(使用Adapt制作电子教学课程),所以我创建了Electron App包装器:

main.js创建BrowserWindow,然后加载index.html

function createWindow() {
    // Create the browser window.
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        "min-width": 800,
        "min-height": 530,
        resize: true,
        "use-content-size": true
    });

    // and load the index.html of the app.
    mainWindow.loadURL('file://' + __dirname + '/index.html');

    // Open the DevTools.
    mainWindow.webContents.openDevTools();
    // Set Window Resizable
    mainWindow.isResizable(true);

    // Emitted when the window is closed.
    mainWindow.on('closed', function () {
        // Dereference the window object, usually you would store windows
        // in an array if your app supports multi windows, this is the time
        // when you should delete the corresponding element.
        mainWindow = null;
    });
}

课程的发射器(承载webview标签)

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #6e6e6e;
            width: 100vw;
            height: 100vh;
        }

        webview {
            display: block;
            width: 100%;
            height: 100%;
        }

    </style>
</head>

<body>
    <webview src="build/scorm_test_harness.html" disablewebsecurity></webview>
</body>

</html>

问题在我关闭开发人员工具面板时开始,一旦完成课程不再加载,当我取消注释mainWindow.webContents.openDevTools();然后它再次工作时,我正在使用此解决方法:

// Open the DevTools.
mainWindow.webContents.openDevTools();
// Close (almost) immediately
setTimeout(function (webContents) {
    webContents.closeDevTools();
}, 100, mainWindow.webContents);

并且它有效,但它是一个丑陋的补丁,对任何人的任何想法?

1 个答案:

答案 0 :(得分:3)

<script>中的某处添加非空head标记。

<强>解释

如果页面上没有脚本,Chrome认为页面上没有动态内容,也没有创建脚本上下文,禁止将electron核心脚本注入页面,负责webview标签处理的脚本(有关于电子github repo上的这个错误的问题报告,但是电子开发人员表示,这是预期的行为(在Chrome核心中),显然,{{1 } xD)。

此处的相关问题link