繁体   English   中英

从原子Electron中的WebView访问DOM

[英]Accessing the DOM from webview in atom Electron

是否有可能从原子电子桌面开发工具包中的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() (在document.querySelector('webview').openDevTools()拥有src之后,直到那时才可用的其他方法)。 这将打开另一个开发工具窗口。 从该控制台,您应该看到您的日志。 请注意,webview和承载该webview的渲染器是两个单独的webContents实例和两个单独的渲染器进程。 您可以通过IPC在它们之间或主要过程之间进行通信。

不确定您的目标是什么,但是如果您想在Webview中进行DOM操作,建议使用preload脚本 该脚本在Webview的JS之前运行,并允许您访问所有node.js和渲染器电子API以及DOM。 executeJavaScript将是一条漫长的艰难之路,而preload脚本是针对这种用例构建的。

这是一个示例,演示1)打开Web视图的devtools,2)在访问DOM的Web视图的上下文中运行预加载脚本,3)通过IPC: https:// github在父渲染器进程和子Web视图进程之间进行通信。 com / ccnokes / electron-tutorials / tree / master / preload-scripts

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM