我正在尝试使用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
的错误。我每次都可以在message
行的电子控制台中看到console.log(message)
的值,所以当我尝试将其放在元素中时,我不明白为什么message
未定义。
notify_window.webContents.executeJavaScript
,这意味着我在notify_window
中没有看到任何控制台语句或错误,但是当时它执行该函数内的所有其他行,因为我看到登录电子和它打开DevTools。这里发生了什么事?如果这是NodeJS的工作原理,或者是由于Promise,首先executeJavaScript
返回或者是Electron的行为,我感到很困惑?
答案 0 :(得分:1)
您在executeJavascript中传递“message”作为变量名称,而不是文件中的变量,这就是未定义的原因。
如果您想发送正在使用的真实“消息”,则必须使用:
.sticky {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 100;
border-top: 0;
}
$(document).ready(function() {
var stickyNavTop = $('.nav').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.nav').addClass('sticky');
} else {
$('.nav').removeClass('sticky');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
奇怪的行为可能是由于错误之后的Javascript破坏造成的,然后再报告错误。