class: JSHandle

JSHandle 表示一个页面内 JavaScript 对象。 JSHandles 可以使用 page.evaluateHandle 方法创建。

  1. const windowHandle = await page.evaluateHandle(() => window);
  2. // ...

JSHandle 可防止引用的 JavaScript 对象被垃圾收集,除非是句柄 disposed。 当原始框架被导航或父上下文被破坏时,JSHandles 会自动处理。

JSHandle 实例可以使用在 page.$eval()page.evaluate()page.evaluateHandle 方法。

jsHandle.asElement()

  • returns: <?[ElementHandle]>

如果对象句柄是 [ElementHandle] 的一个实例,则返回 null 或对象句柄本身。

jsHandle.dispose()

  • returns: <[Promise]> Promise which resolves when the object handle is successfully disposed.

jsHandle.dispose 方法停止引用元素句柄。

jsHandle.executionContext()

  • returns: [ExecutionContext]

返回句柄所属的执行上下文。

jsHandle.getProperties()

  • returns: <[Promise]<[Map]<[string], [JSHandle]>>>

该方法返回一个包含属性名称作为键的映射和属性值的 JSHandle 实例。

  1. const handle = await page.evaluateHandle(() => ({window, document}));
  2. const properties = await handle.getProperties();
  3. const windowHandle = properties.get('window');
  4. const documentHandle = properties.get('document');
  5. await handle.dispose();

jsHandle.getProperty(propertyName)

  • propertyName <[string]> 属性获取
  • returns: <[Promise]<[JSHandle]>>

从引用的对象中获取单个属性。

jsHandle.jsonValue()

  • returns: <[Promise]<[Object]>>

返回对象的 JSON 表示。如果对象又一个 toJSON_behavior)
函数, 它 将不会被调用

注意 如果引用的对象不可字符串化,该方法将返回一个空的 JSON 对象。 如果对象具有循环引用,它将引发一个错误。