javascript – 在atom Electron中从webview访问DOM
作者:互联网
是否有可能从原子电子桌面开发工具包中的webview元素中抓取html,我正在尝试访问DOM但我什么都没有回来,我在运行时在控制台中尝试了一个document.links但我得到了空属性和对象作为回报?
window.onresize = doLayout;
var isLoading = false;
onload = function() {
var webview = document.querySelector('webview');
doLayout();
var t = webview.executeJavaScript("console.log(document.links);");
document.querySelector('#back').onclick = function() {
webview.goBack();
};
<object is="browserplugin" type="application/browser-plugin" id="browser-plugin-1" style="flex: 1 1 auto;"></object>
解决方法:
您的console.log正在登录webview的控制台,而不是父渲染器进程的控制台.从父渲染器运行document.querySelector(‘webview’).openDevTools()(在webview上有src之后,在此之前它的其他方法不可用).这将打开另一个开发工具窗口.从该控制台,您应该看到您的日志.请注意,webview和托管webview的渲染器是两个单独的webContents实例和两个单独的渲染器进程.您可以通过IPC在它们之间或主要过程之间进行通信.
不确定你的目标是什么,但是如果你想在webview中进行DOM操作,我建议使用preload script.这个脚本在webview的JS之前运行,并且你可以访问所有node.js和渲染器电子API.作为DOM. executeJavaScript将是一个漫长的困难之路,而preload脚本是为这种用例而构建的.
这是一个示例,演示1)打开webview的devtools,2)在webview的上下文中运行预加载脚本访问DOM,3)在父渲染器进程和它的子webview进程之间通过IPC进行通信:https://github.com/ccnokes/electron-tutorials/tree/master/preload-scripts
标签:javascript,node-js,github,atom-editor,electron 来源: https://codeday.me/bug/20190623/1267600.html