微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐