首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在atom Electron中从webview访问DOM

在atom Electron中从webview访问DOM
EN

Stack Overflow用户
提问于 2016-09-15 01:01:28
回答 1查看 4.1K关注 0票数 5

是否有可能从atom电子桌面开发工具包中的webview元素中抓取html,我试图访问DOM但什么也得不到,我在运行时尝试了控制台中的document.links,但得到的结果是空的属性和对象?

代码语言:javascript
复制
 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>
EN

回答 1

Stack Overflow用户

发布于 2016-09-17 11:55:35

您的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)通过IPC:https://github.com/ccnokes/electron-tutorials/tree/master/preload-scripts在父渲染器进程及其子webview进程之间进行通信

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档