【问题标题】:variable undefined inside electron executeJavascript电子执行Javascript中未定义的变量
【发布时间】:2018-04-20 09:57:30
【问题描述】:

我正在试用 Electron 框架。我试图废弃 mainWindow,然后将返回的结果放在另一个窗口中。 我正在使用下面的代码(不包括窗口初始化等不必要的代码)

contents = mainWindow.webContents  
contents.on('dom-ready', analyze)
function analyze() {
  contents.executeJavaScript('scrap()').then((result) => {
    message = result.join('\n')
    console.log(message)
    notify_window.webContents.openDevTools()
    notify_window.webContents.executeJavaScript("console.log('test');$('#html').html(message);")
  })
}

问题是,非常不一致。

1.有时它会执行具有notify_window.webContents.executeJavaScript 的行,有时它不会。 当它执行该行时,它会在窗口控制台中打印test,并在其下方显示错误message is undefined。我每次都可以在电子控制台中从console.log(message) 行看到message 的值,所以我不明白为什么当我尝试将message 放入元素时未定义。

  1. 有时它不执行notify_window.webContents.executeJavaScript,这意味着我在notify_window 中看不到任何控制台语句或错误,但当时它执行该函数内的所有其他行,因为我看到电子日志并打开开发工具。这里发生了什么?

我很困惑 NodeJS 是这样工作的,还是由于 Promise,第一个 executeJavaScript 返回还是 Electron 的行为?

【问题讨论】:

    标签: javascript electron


    【解决方案1】:

    您在 executeJavascript 中将“消息”作为变量名传递,而不是作为文件中的变量传递,这就是它未定义的原因。

    如果你想发送你正在使用的真正的“消息”,你必须使用:

    notify_window.webContents.executeJavaScript("console.log('test');$('#html').html('"+message+"');")
    

    奇怪的行为可能是由于在错误之后,在报告错误本身之前损坏了 Javascript。

    【讨论】:

    • 这让我没有想到,但我仍然遇到问题 2。
    猜你喜欢
    • 2016-10-24
    • 2021-08-05
    • 1970-01-01
    • 2021-06-04
    • 2018-06-23
    • 2019-10-30
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多