如何在Electron中使用<webview>方法

如何在Electron中使用<webview>方法,第1张

在电子<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”上访问它们但它们仍然无法使用。希望绑定到上面的事件将为您提供所需的功能。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复