从Electron中的Webview获取BrowserView的大小

时间:2019-02-26 20:42:23

标签: webview electron

我正在尝试将功能作为seen here添加到其他元素下方的Webview中。因此,它获得的x和y值当然仅是webview本身,但是inspectElement()方法需要将窗口的x和y值作为一个整体,而不仅仅是webview。因此,我需要能够获取整个窗口的高度,以便可以做一些数学运算来抵消我传递给inspectElement()的值。

This answer,当我致电remote.getCurrentWindow()时收到此错误

Uncaught TypeError: Cannot read property 'getSize' of null
    at click (<anonymous>:3950:147)
    at CallbacksRegistry.apply (<anonymous>:1090:25)
    at handleMessage (<anonymous>:898:21)
    at EventEmitter.ipcRenderer.on.args (<anonymous>:888:7)
    at EventEmitter.emit (<anonymous>:5163:17)
    at Object.ipcNative.onInternalMessage (<anonymous>:3010:15)

所以它返回null。因此,这个答案是不够的。我似乎在StackOverflow或其他网站上找不到任何有关如何从Webview获取窗口高度或Webview与窗口本身偏移多少的信息。

1 个答案:

答案 0 :(得分:0)

经过一番摸索和阅读文档,我得到了这个解决方案。

这里是将webContents传递给该函数并可以访问BrowserWindow的函数

function getBrowserWindowFromWebContents(
  contents: Electron.WebContents
): Electron.BrowserWindow {
  let topContents = contents
  while (topContents.hostWebContents) {
    topContents = topContents.hostWebContents
  }

  return remote.BrowserWindow.fromWebContents(topContents)
}

那么我们就可以访问getSize()

getBrowserWindowFromWebContents(remote.getCurrentWebContents()).getSize()

然后我们去:)