如何在Electron中使用<webview>方法
在电子<webview>
in this diagram上有一个可以与对象一起使用的方法列表。当我尝试运行任何方法时,它们都不起作用。当我查看检查器中webview
元素的属性时,它说它的原型是__proto__ : webview
。 (myWebview.openDevTools()
)
在原型中存储了所有方法。因此,当我使用这些方法时,我的元素基本上应该从其原型继承这些方法(例如Object.getProptotypeOf(myWebview)
)。
然而!当我使用HTMLElement
时,我会在检查员中看到webview
,而不是<webview id="myWebview" src="path/to.file"></webview>
<script>
var myWebview = document.getElementById('myWebview');
console.log("myWebview: ",myWebview);
console.log("prototype: ",Object.getPrototypeOf(myWebview)); //=> HTMLElement
myWebview.openDevTools();
</script>
。
以下是我的代码示例:
#!/usr/bin/perl -w
use strict;
open (my $fh, '<','example.txt');
open (my $fh1, '>','example2.txt');
my $n = 1;
# For each line of the input file
while(<$fh>) {
# Try to update the name, if successful, increment $n
if ($_ =~ s/^>.*/>Contig$n/) { $n ; }
print $fh1 $_;
}
最佳答案:
2 个答案:
答案 0 :(得分:7)
我发现了这个问题,并在Electron Documentation
中添加了一个示例底线是你需要在webview元素准备就绪的webview中添加一个监听器:
webview.addEventListener("dom-ready", function(){
webview.openDevTools();
});
根据@Shwany的说法,当did-start-loading
事件被触发时,webview的方法将可用,但是最好等到webview元素完全准备就绪dom-ready
有关更详细的解释:
当窗口最初呈现DOM时,webview方法不可用。最初,<webview>
元素的原型仍然是通用HTMLElement
。
在页面渲染后,<webview>
元素开始加载,然后将其原型更改为webview原型(与元素同名)。当它获得对webview原型的访问权限时,它就可以访问所有webview原型方法。
答案 1 :(得分:2)
webview的文档说:
如果您想以任何方式控制访客内容,可以写信 侦听webview事件并响应这些事件的JavaScript 使用webview方法的事件。
关闭这条线索我可以使用以下代码在webview上调用openDevTools:
<script>
var myWebview = document.getElementById('myWebview');
myWebview.addEventListener("did-start-loading", function (e) {
myWebview.openDevTools();
});
</script>
我猜这些方法不会立即应用于webview。我尝试在document.readystate ==“complete”上访问它们但它们仍然无法使用。希望绑定到上面的事件将为您提供所需的功能。