【问题标题】:Electron preload script for webview not working?webview的电子预加载脚本不起作用?
【发布时间】:2016-07-06 08:08:18
【问题描述】:

我有一个这样加载的 webview:

<webview id="link-view"
        src="http://url.espace.com/"
        preload="./preload.js"
        autosize="on"
        partition="persist:link"></webview>

在 preload.js 文件中:我有这个

console.log("test");

这根本行不通..

谁能解释一下?

【问题讨论】:

  • 尝试使用preload.js 而不是./preloads.js
  • 对于来自 Google 的用户,请确保在动态创建 webview 时使用 setAttribute。这让我有点困惑,因为它曾经与旧版本的 Electron 一起工作。所以代替 webview.preload = './preload.js' 做 webview.setAttribute('preload', './preload.js')

标签: javascript webview electron


【解决方案1】:

我刚刚尝试了相同的场景,它按预期工作。

您是否打开了&lt;webview&gt; 开发工具?作为 &lt;webview&gt; 拥有自己的开发工具,这将是我可以看到预加载脚本未显示 console.log 输出的唯一原因。它们可以通过以下方式打开:

var webview = document.getElementById("link-view");
webview.openDevTools();

或者您的脚本路径不正确,我对此表示怀疑,因为您似乎对此很确定。

【讨论】:

  • 如果这对任何人都不起作用,那么很可能是预加载脚本本身出现错误,不会显示在应用开发工具中,而是 webview 之一。
【解决方案2】:

使用最新的Electron 2.0.0beta-5,在撰写本文时),preload 属性需要file:(或asar:)协议,后跟绝对路径。 ./preload.js 之类的路径似乎不再起作用并引发异常:Only "file:" protocol is supported in "preload" attribute.

【讨论】:

    【解决方案3】:

    这解决了我在电子 3.0.0-beta.4 中使用 react.js 的问题

    <webview src={'http://example.com'} preload={`file://${__dirname}/preload.js`}/>
    

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 2015-10-15
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      相关资源
      最近更新 更多