Git Product home page Git Product logo

Comments (5)

alexstrat avatar alexstrat commented on July 18, 2024 4

Actually, if the BrowserWindow's webcontents and webview's webcontents are on the same partition, they'll end up sharing the same session instance and, since the 'will-download' listener is attached on session, electron-dl should work for the webview as well.

I guess a more general approach would be to leverage the event session-created instead of browser-window-created (or the web-contents-created like I suggested above):

app.on('session-created', (session) => {
  session.on('will-download', (e, item, contents) => {
    let hostWebContents = contents;
    if (contents.getType() === 'webview') {
      const hostWebContents = contents.hostWebContents;
    }
    const hostWin = BrowserWindow.fromWebContents(hostWebContents);
    ...
  });
});

from electron-dl.

sindresorhus avatar sindresorhus commented on July 18, 2024

It could find all the webviews, iterate through them, and subscribe, but not something I need, so would have to be a pull request.

from electron-dl.

bahmutov avatar bahmutov commented on July 18, 2024

I think the problem is related to lack of "app" in the webview, see attached screenshot when trying to download an image inside a webview (thanks for https://github.com/sindresorhus/electron-context-menu BTW)

screen shot 2016-12-20 at 12 21 51 pm

from electron-dl.

alexstrat avatar alexstrat commented on July 18, 2024

I guess leveraging the (undocumented) eventweb-contents-created instead of browser-window-created here will roughly do the trick.
One can then get the "host window" using BrowserWindow.fromWebContents(contents.hostWebContents) where contents is the webview's WebContents.

Could probably introduce an option to opt-in or opt-out the handling of webviews, and leverage the undocumented contents.getType() like this:

app.on('web-contents-created', (event, contents) => {
  if (contents.getType() === 'webview') {
    const hostWin = BrowserWindow.fromWebContents(contents.hostWebContents);
  }
 });

from electron-dl.

djalmaaraujo avatar djalmaaraujo commented on July 18, 2024

@alexstrat Thanks, you suggestion works.

from electron-dl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.