2

我有这个奇怪的问题,我试图让网站离线工作(使用 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);

它有效,但它是一个丑陋的补丁,有人对此有什么想法吗?

4

1 回答 1

3

<script>head. _


解释:

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


这是相关的问题链接

于 2016-01-28T13:05:44.573 回答