class: JSHandle

优质
小牛编辑
134浏览
2023-12-01

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

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

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()

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

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

jsHandle.getProperty(propertyName)

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

jsHandle.jsonValue()

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

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