Skip to main content
Version: 16.1.0

JSHandle class

Represents an in-page JavaScript object. JSHandles can be created with the page.evaluateHandle method.


export declare class JSHandle<T = unknown>


The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the JSHandle class.


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

JSHandle prevents the referenced JavaScript object from being garbage-collected unless the handle is disposed. JSHandles are auto- disposed when their origin frame gets navigated or the parent context gets destroyed.

JSHandle instances can be used as arguments for Page.$eval(), Page.evaluate(), and Page.evaluateHandle().


[__JSHandleSymbol]?T(Optional) Used for nominally typing JSHandle.


dispose()Stops referencing the element handle, and resolves when the object handle is successfully disposed of.
evaluate(pageFunction, args)This method passes this handle as the first argument to pageFunction. If pageFunction returns a Promise, then handle.evaluate would wait for the promise to resolve and return its value.
evaluateHandle(pageFunction, args)This method passes this handle as the first argument to pageFunction.
executionContext()Returns the execution context the handle belongs to.
getProperties()The method returns a map with property names as keys and JSHandle instances for the property values.
getProperty(propertyName)Fetches a single property from the referenced object.
remoteObject()Provides access to [Protocol.Runtime.RemoteObject](\#type-RemoteObject) backing this JSHandle.
toString()Returns a string representation of the JSHandle.