Electron webContents 模塊

2019-08-14 19:22 更新

webContents 是一個(gè) 事件發(fā)出者.

它負(fù)責(zé)渲染并控制網(wǎng)頁(yè),也是 BrowserWindow 對(duì)象的屬性.一個(gè)使用 webContents 的例子:

const BrowserWindow = require('electron').BrowserWindow;

var win = new BrowserWindow({width: 800, height: 1500});
win.loadURL("http://m.o2fo.com");

var webContents = win.webContents;

事件

webContents 對(duì)象可發(fā)出下列事件:

Event: 'did-finish-load'

當(dāng)導(dǎo)航完成時(shí)發(fā)出事件,onload 事件也完成.

Event: 'did-fail-load'

返回:

  • event Event
  • errorCode Integer
  • errorDescription String
  • validatedURL String

這個(gè)事件類(lèi)似 did-finish-load ,但是是在加載失敗或取消加載時(shí)發(fā)出, 例如, window.stop() 請(qǐng)求結(jié)束.錯(cuò)誤代碼的完整列表和它們的含義都可以在 here 找到.

Event: 'did-frame-finish-load'

返回:

  • event Event
  • isMainFrame Boolean

當(dāng)一個(gè) frame 導(dǎo)航完成的時(shí)候發(fā)出事件.

Event: 'did-start-loading'

當(dāng) tab 的spinner 開(kāi)始 spinning的時(shí)候.

Event: 'did-stop-loading'

當(dāng) tab 的spinner 結(jié)束 spinning的時(shí)候.

Event: 'did-get-response-details'

返回:

  • event Event
  • status Boolean
  • newURL String
  • originalURL String
  • httpResponseCode Integer
  • requestMethod String
  • referrer String
  • headers Object

當(dāng)有關(guān)請(qǐng)求資源的詳細(xì)信息可用的時(shí)候發(fā)出事件. status 標(biāo)識(shí)了 socket鏈接來(lái)下載資源.

Event: 'did-get-redirect-request'

返回:

  • event Event
  • oldURL String
  • newURL String
  • isMainFrame Boolean
  • httpResponseCode Integer
  • requestMethod String
  • referrer String
  • headers Object

當(dāng)在請(qǐng)求資源時(shí)收到重定向的時(shí)候發(fā)出事件.

Event: 'dom-ready'

返回:

  • event Event

當(dāng)指定 frame 中的 文檔加載完成的時(shí)候發(fā)出事件.

Event: 'page-favicon-updated'

返回:

  • event Event
  • favicons Array - Array of URLs

當(dāng) page 收到圖標(biāo) url 的時(shí)候發(fā)出事件.

Event: 'new-window'

返回:

  • event Event
  • url String
  • frameName String
  • disposition String - 可為 defaultforeground-tabbackground-tabnew-window 和 other.
  • options Object - 創(chuàng)建新的 BrowserWindow時(shí)使用的參數(shù).

當(dāng) page 請(qǐng)求打開(kāi)指定 url 窗口的時(shí)候發(fā)出事件.這可以是通過(guò) window.open 或一個(gè)外部連接如 <a target='_blank'> 發(fā)出的請(qǐng)求.

默認(rèn)指定 url 的 BrowserWindow 會(huì)被創(chuàng)建.

調(diào)用 event.preventDefault() 可以用來(lái)阻止打開(kāi)窗口.

Event: 'will-navigate'

返回:

  • event Event
  • url String

當(dāng)用戶(hù)或 page 想要開(kāi)始導(dǎo)航的時(shí)候發(fā)出事件.它可在當(dāng) window.location 對(duì)象改變或用戶(hù)點(diǎn)擊 page 中的鏈接的時(shí)候發(fā)生.

當(dāng)使用 api(如 webContents.loadURL 和 webContents.back) 以編程方式來(lái)啟動(dòng)導(dǎo)航的時(shí)候,這個(gè)事件將不會(huì)發(fā)出.

它也不會(huì)在頁(yè)內(nèi)跳轉(zhuǎn)發(fā)生, 例如點(diǎn)擊錨鏈接或更新 window.location.hash.使用 did-navigate-in-page 事件可以達(dá)到目的.

調(diào)用 event.preventDefault() 可以阻止導(dǎo)航.

Event: 'did-navigate'

返回:

  • event Event
  • url String

當(dāng)一個(gè)導(dǎo)航結(jié)束時(shí)候發(fā)出事件.

頁(yè)內(nèi)跳轉(zhuǎn)時(shí)不會(huì)發(fā)出這個(gè)事件,例如點(diǎn)擊錨鏈接或更新 window.location.hash.使用 did-navigate-in-page 事件可以達(dá)到目的.

Event: 'did-navigate-in-page'

返回:

  • event Event
  • url String

當(dāng)頁(yè)內(nèi)導(dǎo)航發(fā)生的時(shí)候發(fā)出事件.

當(dāng)頁(yè)內(nèi)導(dǎo)航發(fā)生的時(shí)候,page 的url 改變,但是不會(huì)跳出界面.例如當(dāng)點(diǎn)擊錨鏈接時(shí)或者 DOM 的 hashchange 事件發(fā)生.

Event: 'crashed'

當(dāng)渲染進(jìn)程崩潰的時(shí)候發(fā)出事件.

Event: 'plugin-crashed'

返回:

  • event Event
  • name String
  • version String

當(dāng)插件進(jìn)程崩潰時(shí)候發(fā)出事件.

Event: 'destroyed'

當(dāng) webContents 被刪除的時(shí)候發(fā)出事件.

Event: 'devtools-opened'

當(dāng)開(kāi)發(fā)者工具欄打開(kāi)的時(shí)候發(fā)出事件.

Event: 'devtools-closed'

當(dāng)開(kāi)發(fā)者工具欄關(guān)閉時(shí)候發(fā)出事件.

Event: 'devtools-focused'

當(dāng)開(kāi)發(fā)者工具欄獲得焦點(diǎn)或打開(kāi)的時(shí)候發(fā)出事件.

Event: 'certificate-error'

返回:

  • event Event
  • url URL
  • error String - The error code
  • certificate Object
    • data Buffer - PEM encoded data
    • issuerName String
  • callback Function

當(dāng)驗(yàn)證證書(shū)或 url 失敗的時(shí)候發(fā)出事件.

使用方法類(lèi)似 app 的 certificate-error 事件.

Event: 'select-client-certificate'

返回:

  • event Event
  • url URL
  • certificateList [Objects]
    • data Buffer - PEM encoded data
    • issuerName String - Issuer's Common Name
  • callback Function

當(dāng)請(qǐng)求客戶(hù)端證書(shū)的時(shí)候發(fā)出事件.

使用方法類(lèi)似 app 的 select-client-certificate 事件.

Event: 'login'

返回:

  • event Event
  • request Object
    • method String
    • url URL
    • referrer URL
  • authInfo Object
    • isProxy Boolean
    • scheme String
    • host String
    • port Integer
    • realm String
  • callback Function

當(dāng) webContents 想做基本驗(yàn)證的時(shí)候發(fā)出事件.

使用方法類(lèi)似 the login event of app.

Event: 'found-in-page'

返回:

  • event Event
  • result Object
    • requestId Integer
    • finalUpdate Boolean - 標(biāo)識(shí)是否還有更多的值可以查看.
    • activeMatchOrdinal Integer (可選) - 活動(dòng)匹配位置
    • matches Integer (可選) - 匹配數(shù)量.
    • selectionArea Object (可選) - 協(xié)調(diào)首個(gè)匹配位置.

當(dāng)使用 webContents.findInPage 進(jìn)行頁(yè)內(nèi)查找并且找到可用值得時(shí)候發(fā)出事件.

Event: 'media-started-playing'

當(dāng)媒體開(kāi)始播放的時(shí)候發(fā)出事件.

Event: 'media-paused'

當(dāng)媒體停止播放的時(shí)候發(fā)出事件.

Event: 'did-change-theme-color'

當(dāng)page 的主題色時(shí)候發(fā)出事件.這通常由于引入了一個(gè) meta 標(biāo)簽 :

<meta name='theme-color' content='#ff0000'>

Event: 'cursor-changed'

返回:

  • event Event
  • type String
  • image NativeImage (可選)
  • scale Float (可選)

當(dāng)鼠標(biāo)的類(lèi)型發(fā)生改變的時(shí)候發(fā)出事件. type 的參數(shù)可以是 defaultcrosshairpointertextwaithelpe-resizen-resizene-resizenw-resizes-resizese-resizesw-resizew-resizens-resizeew-resizenesw-resizenwse-resizecol-resizerow-resizem-panninge-panningn-panningne-panningnw-pannings-panningse-panningsw-panningw-panningmovevertical-textcellcontext-menualiasprogressnodropcopynone,not-allowedzoom-inzoom-outgrabgrabbingcustom.

如果 type 參數(shù)值為 customimage 參數(shù)會(huì)在一個(gè)NativeImage 中控制自定義鼠標(biāo)圖片, 并且 scale 會(huì)控制圖片的縮放比例.

實(shí)例方法

webContents 對(duì)象有如下的實(shí)例方法:

webContents.loadURL(url[, options])

  • url URL
  • options Object (可選)
    • httpReferrer String - A HTTP Referrer url.
    • userAgent String - 產(chǎn)生請(qǐng)求的用戶(hù)代理
    • extraHeaders String - 以 "\n" 分隔的額外頭

在窗口中加載 url , url 必須包含協(xié)議前綴, 比如 http:// 或 file://. 如果加載想要忽略 http 緩存,可以使用 pragma 頭來(lái)達(dá)到目的.

const options = {"extraHeaders" : "pragma: no-cache\n"}
webContents.loadURL(url, options)

webContents.downloadURL(url)

  • url URL

初始化一個(gè)指定 url 的資源下載,不導(dǎo)航跳轉(zhuǎn). session 的 will-download 事件會(huì)觸發(fā).

webContents.getURL()

返回當(dāng)前page 的 url.

var win = new BrowserWindow({width: 800, height: 600});
win.loadURL("http://github.com");

var currentURL = win.webContents.getURL();

webContents.getTitle()

返回當(dāng)前page 的 標(biāo)題.

webContents.isLoading()

返回一個(gè)布爾值,標(biāo)識(shí)當(dāng)前頁(yè)是否正在加載.

webContents.isWaitingForResponse()

返回一個(gè)布爾值,標(biāo)識(shí)當(dāng)前頁(yè)是否正在等待主要資源的第一次響應(yīng).

webContents.stop()

停止還為開(kāi)始的導(dǎo)航.

webContents.reload()

重載當(dāng)前頁(yè).

webContents.reloadIgnoringCache()

重載當(dāng)前頁(yè),忽略緩存.

webContents.canGoBack()

返回一個(gè)布爾值,標(biāo)識(shí)瀏覽器是否能回到前一個(gè)page.

webContents.canGoForward()

返回一個(gè)布爾值,標(biāo)識(shí)瀏覽器是否能前往下一個(gè)page.

webContents.canGoToOffset(offset)

  • offset Integer

返回一個(gè)布爾值,標(biāo)識(shí)瀏覽器是否能前往指定 offset 的page.

webContents.clearHistory()

清除導(dǎo)航歷史.

webContents.goBack()

讓瀏覽器回退到前一個(gè)page.

webContents.goForward()

讓瀏覽器回前往下一個(gè)page.

webContents.goToIndex(index)

  • index Integer

讓瀏覽器回前往指定 index 的page.

webContents.goToOffset(offset)

  • offset Integer

導(dǎo)航到相對(duì)于當(dāng)前頁(yè)的偏移位置頁(yè).

webContents.isCrashed()

渲染進(jìn)程是否崩潰.

webContents.setUserAgent(userAgent)

  • userAgent String

重寫(xiě)本頁(yè)用戶(hù)代理.

webContents.getUserAgent()

返回一個(gè) String ,標(biāo)識(shí)本頁(yè)用戶(hù)代理信息.

webContents.insertCSS(css)

  • css String

為當(dāng)前頁(yè)插入css.

webContents.executeJavaScript(code[, userGesture, callback])

  • code String
  • userGesture Boolean (可選)
  • callback Function (可選) - 腳本執(zhí)行完成后調(diào)用的回調(diào)函數(shù).
    • result

評(píng)估 page 代碼.

瀏覽器窗口中的一些 HTML API ,例如 requestFullScreen,只能被用戶(hù)手勢(shì)請(qǐng)求.設(shè)置 userGesture 為 true 可以取消這個(gè)限制.

win.webContents.executeJavaScript('\
      $(".skey").focus();\
');

webContents.setAudioMuted(muted)

  • muted Boolean

減緩當(dāng)前也的 audio 的播放速度.

webContents.isAudioMuted()

返回一個(gè)布爾值,標(biāo)識(shí)當(dāng)前頁(yè)是否減緩了 audio 的播放速度.

webContents.undo()

執(zhí)行網(wǎng)頁(yè)的編輯命令 undo .

webContents.redo()

執(zhí)行網(wǎng)頁(yè)的編輯命令 redo .

webContents.cut()

執(zhí)行網(wǎng)頁(yè)的編輯命令 cut .

webContents.copy()

執(zhí)行網(wǎng)頁(yè)的編輯命令 copy .

webContents.paste()

執(zhí)行網(wǎng)頁(yè)的編輯命令 paste .

webContents.pasteAndMatchStyle()

執(zhí)行網(wǎng)頁(yè)的編輯命令 pasteAndMatchStyle .

webContents.delete()

執(zhí)行網(wǎng)頁(yè)的編輯命令 delete .

webContents.selectAll()

執(zhí)行網(wǎng)頁(yè)的編輯命令 selectAll .

webContents.unselect()

執(zhí)行網(wǎng)頁(yè)的編輯命令 unselect .

webContents.replace(text)

  • text String

執(zhí)行網(wǎng)頁(yè)的編輯命令 replace .

webContents.replaceMisspelling(text)

  • text String

執(zhí)行網(wǎng)頁(yè)的編輯命令 replaceMisspelling .

webContents.insertText(text)

  • text String

插入 text 到獲得了焦點(diǎn)的元素.

webContents.findInPage(text[, options])

  • text String - 查找內(nèi)容, 不能為空.
  • options Object (可選)
    • forward Boolean - 是否向前或向后查找, 默認(rèn)為 true.
    • findNext Boolean - 當(dāng)前操作是否是第一次查找或下一次查找, 默認(rèn)為 false.
    • matchCase Boolean - 查找是否區(qū)分大小寫(xiě), 默認(rèn)為 false.
    • wordStart Boolean -是否僅以首字母查找. 默認(rèn)為 false.
    • medialCapitalAsWordStart Boolean - 是否結(jié)合 wordStart,如果匹配是大寫(xiě)字母開(kāi)頭,后面接小寫(xiě)字母或無(wú)字母,那么就接受這個(gè)詞中匹配.接受幾個(gè)其它的合成詞匹配, 默認(rèn)為 false.

發(fā)起請(qǐng)求,在網(wǎng)頁(yè)中查找所有與 text 相匹配的項(xiàng),并且返回一個(gè) Integer 來(lái)表示這個(gè)請(qǐng)求用的請(qǐng)求Id.這個(gè)請(qǐng)求結(jié)果可以通過(guò)訂閱 found-in-page 事件來(lái)取得.

webContents.stopFindInPage(action)

  • action String - 指定一個(gè)行為來(lái)接替停止 webContents.findInPage 請(qǐng)求.
    • clearSelection - 轉(zhuǎn)變?yōu)橐粋€(gè)普通的 selection.
    • keepSelection - 清除 selection.
    • activateSelection - 獲取焦點(diǎn)并點(diǎn)擊 selection node.

使用給定的 action 來(lái)為 webContents 停止任何 findInPage 請(qǐng)求.

webContents.on('found-in-page', function(event, result) {
  if (result.finalUpdate)
    webContents.stopFindInPage("clearSelection");
});

const requestId = webContents.findInPage("api");

webContents.hasServiceWorker(callback)

  • callback Function

檢查是否有任何 ServiceWorker 注冊(cè)了,并且返回一個(gè)布爾值,來(lái)作為 callback響應(yīng)的標(biāo)識(shí).

webContents.unregisterServiceWorker(callback)

  • callback Function

如果存在任何 ServiceWorker ,則全部注銷(xiāo),并且當(dāng)JS承諾執(zhí)行行或JS拒絕執(zhí)行而失敗的時(shí)候,返回一個(gè)布爾值,它標(biāo)識(shí)了相應(yīng)的 callback.

webContents.print([options])

  • options Object (可選)
    • silent Boolean - 不需要請(qǐng)求用戶(hù)的打印設(shè)置. 默認(rèn)為 false.
    • printBackground Boolean - 打印背景和網(wǎng)頁(yè)圖片. 默認(rèn)為 false.

打印窗口的網(wǎng)頁(yè). 當(dāng)設(shè)置 silent 為 false 的時(shí)候,Electron 將使用系統(tǒng)默認(rèn)的打印機(jī)和打印方式來(lái)打印.

在網(wǎng)頁(yè)中調(diào)用 window.print() 和 調(diào)用 webContents.print({silent: false, printBackground: false})具有相同的作用.

注意: 在 Windows, 打印 API 依賴(lài)于 pdf.dll. 如果你的應(yīng)用不使用任何的打印, 你可以安全刪除 pdf.dll來(lái)減少二進(jìn)制文件的size.

webContents.printToPDF(options, callback)

  • options Object
    • marginsType Integer - 指定使用的 margin type. 默認(rèn) margin 使用 0, 無(wú) margin 使用 1, 最小化 margin 使用 2.
    • pageSize String - 指定生成的PDF文件的page size. 可以是 A3A4A5LegalLetter 和 Tabloid.
    • printBackground Boolean - 是否打印 css 背景.
    • printSelectionOnly Boolean - 是否只打印選中的部分.
    • landscape Boolean - landscape 為 true, portrait 為 false.
  • callback Function

打印窗口的網(wǎng)頁(yè)為 pdf ,使用 Chromium 預(yù)覽打印的自定義設(shè)置.

完成時(shí)使用 callback(error, data) 調(diào)用 callback . data 是一個(gè) Buffer ,包含了生成的 pdf 數(shù)據(jù).

默認(rèn),空的 options 被視為 :

{
  marginsType: 0,
  printBackground: false,
  printSelectionOnly: false,
  landscape: false
}
const BrowserWindow = require('electron').BrowserWindow;
const fs = require('fs');

var win = new BrowserWindow({width: 800, height: 600});
win.loadURL("http://m.o2fo.com");

win.webContents.on("did-finish-load", function() {
  // Use default printing options
  win.webContents.printToPDF({}, function(error, data) {
    if (error) throw error;
    fs.writeFile("/tmp/print.pdf", data, function(error) {
      if (error)
        throw error;
      console.log("Write PDF successfully.");
    })
  })
});

webContents.addWorkSpace(path)

  • path String

添加指定的路徑給開(kāi)發(fā)者工具欄的 workspace.必須在 DevTools 創(chuàng)建之后使用它 :

mainWindow.webContents.on('devtools-opened', function() {
  mainWindow.webContents.addWorkSpace(__dirname);
});

webContents.removeWorkSpace(path)

  • path String

從開(kāi)發(fā)者工具欄的 workspace 刪除指定的路徑.

webContents.openDevTools([options])

  • options Object (可選)
    • detach Boolean - 在一個(gè)新窗口打開(kāi)開(kāi)發(fā)者工具欄

打開(kāi)開(kāi)發(fā)者工具欄.

webContents.closeDevTools()

關(guān)閉開(kāi)發(fā)者工具欄.

webContents.isDevToolsOpened()

返回布爾值,開(kāi)發(fā)者工具欄是否打開(kāi).

webContents.isDevToolsFocused()

返回布爾值,開(kāi)發(fā)者工具欄視圖是否獲得焦點(diǎn).

webContents.toggleDevTools()

Toggles 開(kāi)發(fā)者工具.

webContents.inspectElement(x, y)

  • x Integer
  • y Integer

在 (xy) 開(kāi)始檢測(cè)元素.

webContents.inspectServiceWorker()

為 service worker 上下文打開(kāi)開(kāi)發(fā)者工具欄.

webContents.send(channel[, arg1][, arg2][, ...])

  • channel String
  • arg (可選)

通過(guò) channel 發(fā)送異步消息給渲染進(jìn)程,你也可發(fā)送任意的參數(shù).參數(shù)應(yīng)該在 JSON 內(nèi)部序列化,并且此后沒(méi)有函數(shù)或原形鏈被包括了.

渲染進(jìn)程可以通過(guò)使用 ipcRenderer 監(jiān)聽(tīng) channel 來(lái)處理消息.

例子,從主進(jìn)程向渲染進(jìn)程發(fā)送消息 :

// 主進(jìn)程.
var window = null;
app.on('ready', function() {
  window = new BrowserWindow({width: 800, height: 600});
  window.loadURL('file://' + __dirname + '/index.html');
  window.webContents.on('did-finish-load', function() {
    window.webContents.send('ping', 'whoooooooh!');
  });
});
<!-- index.html -->
<html>
<body>
  <script>
    require('electron').ipcRenderer.on('ping', function(event, message) {
      console.log(message);  // Prints "whoooooooh!"
    });
  </script>
</body>
</html>

webContents.enableDeviceEmulation(parameters)

parameters Object, properties:

  • screenPosition String - 指定需要模擬的屏幕 (默認(rèn) : desktop)
    • desktop
    • mobile
  • screenSize Object - 設(shè)置模擬屏幕 size (screenPosition == mobile)
    • width Integer - 設(shè)置模擬屏幕 width
    • height Integer - 設(shè)置模擬屏幕 height
  • viewPosition Object - 在屏幕放置 view (screenPosition == mobile) (默認(rèn): {x: 0, y: 0})
    • x Integer - 設(shè)置偏移左上角的x軸
    • y Integer - 設(shè)置偏移左上角的y軸
  • deviceScaleFactor Integer - 設(shè)置設(shè)備比例因子 (如果為0,默認(rèn)為原始屏幕比例) (默認(rèn): 0)
  • viewSize Object - 設(shè)置模擬視圖 size (空表示不覆蓋)
    • width Integer - 設(shè)置模擬視圖 width
    • height Integer - 設(shè)置模擬視圖 height
  • fitToView Boolean - 如果有必要的話,是否把模擬視圖按比例縮放來(lái)適應(yīng)可用空間 (默認(rèn): false)
  • offset Object - 可用空間內(nèi)的模擬視圖偏移 (不在適應(yīng)模式) (默認(rèn): {x: 0, y: 0})
    • x Float - 設(shè)置相對(duì)左上角的x軸偏移值
    • y Float - 設(shè)置相對(duì)左上角的y軸偏移值
  • scale Float - 可用空間內(nèi)的模擬視圖偏移 (不在適應(yīng)視圖模式) (默認(rèn): 1)

使用給定的參數(shù)來(lái)開(kāi)啟設(shè)備模擬.

webContents.disableDeviceEmulation()

使用 webContents.enableDeviceEmulation 關(guān)閉設(shè)備模擬.

webContents.sendInputEvent(event)

  • event Object
    • type String (必需) - 事件類(lèi)型,可以是 mouseDownmouseUpmouseEntermouseLeavecontextMenumouseWheelmouseMovekeyDownkeyUpchar.
    • modifiers Array - 事件的 modifiers 數(shù)組, 可以是 include shiftcontrolaltmetaisKeypadisAutoRepeatleftButtonDownmiddleButtonDownrightButtonDowncapsLock,numLockleftright.

向 page 發(fā)送一個(gè)輸入 event .

對(duì)鍵盤(pán)事件來(lái)說(shuō),event 對(duì)象還有如下屬性 :

  • keyCode String (必需) - 特點(diǎn)是將作為鍵盤(pán)事件發(fā)送. 可用的 key codes Accelerator.

對(duì)鼠標(biāo)事件來(lái)說(shuō),event 對(duì)象還有如下屬性 :

  • x Integer (required)
  • y Integer (required)
  • button String - button 按下, 可以是 leftmiddleright
  • globalX Integer
  • globalY Integer
  • movementX Integer
  • movementY Integer
  • clickCount Integer

對(duì)鼠標(biāo)滾輪事件來(lái)說(shuō),event 對(duì)象還有如下屬性 :

  • deltaX Integer
  • deltaY Integer
  • wheelTicksX Integer
  • wheelTicksY Integer
  • accelerationRatioX Integer
  • accelerationRatioY Integer
  • hasPreciseScrollingDeltas Boolean
  • canScroll Boolean

webContents.beginFrameSubscription(callback)

  • callback Function

開(kāi)始訂閱 提交 事件和捕獲數(shù)據(jù)幀,當(dāng)有 提交 事件時(shí),使用 callback(frameBuffer) 調(diào)用 callback.

frameBuffer 是一個(gè)包含原始像素?cái)?shù)據(jù)的 Buffer,像素?cái)?shù)據(jù)是按照 32bit BGRA 格式有效存儲(chǔ)的,但是實(shí)際情況是取決于處理器的字節(jié)順序的(大多數(shù)的處理器是存放小端序的,如果是在大端序的處理器上,數(shù)據(jù)是 32bit ARGB 格式).

webContents.endFrameSubscription()

停止訂閱幀提交事件.

webContents.savePage(fullPath, saveType, callback)

  • fullPath String - 文件的完整路徑.
  • saveType String - 指定保存類(lèi)型.
    • HTMLOnly - 只保存html.
    • HTMLComplete - 保存整個(gè) page 內(nèi)容.
    • MHTML - 保存完整的 html 為 MHTML.
  • callback Function - function(error) {}.
    • error Error

如果保存界面過(guò)程初始化成功,返回 true.

win.loadURL('http://m.o2fo.com');

win.webContents.on('did-finish-load', function() {
  win.webContents.savePage('/tmp/test.html', 'HTMLComplete', function(error) {
    if (!error)
      console.log("Save page successfully");
  });
});

實(shí)例屬性

WebContents 對(duì)象也有下列屬性:

webContents.session

返回這個(gè) webContents 使用的 session 對(duì)象.

webContents.hostWebContents

返回這個(gè) webContents 的父 webContents .

webContents.devToolsWebContents

獲取這個(gè) WebContents 的開(kāi)發(fā)者工具欄的 WebContents .

注意: 用戶(hù)不可保存這個(gè)對(duì)象,因?yàn)楫?dāng)開(kāi)發(fā)者工具欄關(guān)閉的時(shí)候它的值為 null .

webContents.debugger

調(diào)試 API 為 remote debugging protocol 提供交替?zhèn)魉?

try {
  win.webContents.debugger.attach("1.1");
} catch(err) {
  console.log("Debugger attach failed : ", err);
};

win.webContents.debugger.on('detach', function(event, reason) {
  console.log("Debugger detached due to : ", reason);
});

win.webContents.debugger.on('message', function(event, method, params) {
  if (method == "Network.requestWillBeSent") {
    if (params.request.url == "http://m.o2fo.com")
      win.webContents.debugger.detach();
  }
})

win.webContents.debugger.sendCommand("Network.enable");

webContents.debugger.attach([protocolVersion])

  • protocolVersion String (可選) - 請(qǐng)求調(diào)試協(xié)議版本.

添加 webContents 調(diào)試.

webContents.debugger.isAttached()

返回一個(gè)布爾值,標(biāo)識(shí)是否已經(jīng)給 webContents 添加了調(diào)試.

webContents.debugger.detach()

刪除 webContents 調(diào)試.

webContents.debugger.sendCommand(method[, commandParams, callback])

  • method String - 方法名, 應(yīng)該是由遠(yuǎn)程調(diào)試協(xié)議定義的方法.
  • commandParams Object (可選) - 請(qǐng)求參數(shù)為 JSON 對(duì)象.
  • callback Function (可選) - Response
    • error Object - 錯(cuò)誤消息,標(biāo)識(shí)命令失敗.
    • result Object - 回復(fù)在遠(yuǎn)程調(diào)試協(xié)議中由 'returns'屬性定義的命令描述.

發(fā)送給定命令給調(diào)試目標(biāo).

Event: 'detach'

  • event Event
  • reason String - 拆分調(diào)試器原因.

在調(diào)試 session 結(jié)束時(shí)發(fā)出事件.這在 webContents 關(guān)閉時(shí)或 webContents 請(qǐng)求開(kāi)發(fā)者工具欄時(shí)發(fā)生.

Event: 'message'

  • event Event
  • method String - 方法名.
  • params Object - 在遠(yuǎn)程調(diào)試協(xié)議中由 'parameters' 屬性定義的事件參數(shù).

每當(dāng)調(diào)試目標(biāo)發(fā)出事件時(shí)發(fā)出.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)