UNPKG

electron-html-to

Version:

Convert html to html/image using electron

87 lines (61 loc) 2.48 kB
'use strict'; var urlModule = require('url'); module.exports = function (browserWindow, options, log, saveLogInPage) { var allowLocalFilesAccess = options.allowLocalFilesAccess, parsedPageUrl = urlModule.parse(options.pageUrl), pageProtocol = undefined, redirectURL = undefined, pageRequested = false; if (!parsedPageUrl.protocol) { pageProtocol = 'file'; } else { // removing ':' pageProtocol = parsedPageUrl.protocol.slice(0, -1); } browserWindow.webContents.session.webRequest.onBeforeRequest(function (details, cb) { var resourceUrl = details.url, msg = undefined; if (!pageRequested) { msg = 'request to load the page: ' + resourceUrl; pageRequested = true; log(msg); saveLogInPage('debug', msg); return cb({ cancel: false }); } msg = 'request for resource: ' + resourceUrl + ', resourceType: ' + details.resourceType; log(msg); saveLogInPage('debug', msg); if (resourceUrl.lastIndexOf('file:///', 0) === 0 && !allowLocalFilesAccess) { // potentially dangerous request msg = 'denying request to a file because local file access is disabled, url: ' + resourceUrl; log(msg); saveLogInPage('warn', msg); return cb({ cancel: true }); } else if (resourceUrl.lastIndexOf('file://', 0) === 0 && resourceUrl.lastIndexOf('file:///', 0) !== 0) { // support cdn like format -> //cdn.jquery... if (pageProtocol === 'file') { redirectURL = 'http://' + resourceUrl.substr(7); } else { redirectURL = pageProtocol + '://' + resourceUrl.substr(7); } msg = 'handling cdn format request, url: ' + resourceUrl.substr(7) + ', redirecting to: ' + redirectURL; log(msg); saveLogInPage('debug', msg); return cb({ cancel: false, redirectURL: redirectURL }); } cb({ cancel: false }); }); browserWindow.webContents.session.webRequest.onCompleted(function (details) { var msg = 'request for resource completed: ' + details.url + ', resourceType: ' + details.resourceType + ', status: ' + details.statusCode; log(msg); saveLogInPage('debug', msg); }); browserWindow.webContents.session.webRequest.onErrorOccurred(function (details) { var msg = 'request for resource failed: ' + details.url + ', resourceType: ' + details.resourceType + ', error: ' + details.error; log(msg); saveLogInPage('warn', msg); }); };