Skip to main content

JSHandle

JSHandle represents an in-page JavaScript object. JSHandles can be created with the Page.EvaluateHandleAsync() method.

var windowHandle = await page.EvaluateHandleAsync("() => window");

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

JSHandle instances can be used as an argument in Page.EvalOnSelectorAsync(), Page.EvaluateAsync() and Page.EvaluateHandleAsync() methods.


方法 (Methods)

AsElement

Added before v1.9 jsHandle.AsElement

Returns either null or the object handle itself, if the object handle is an instance of ElementHandle.

使用方式

JsHandle.AsElement();

傳回值


DisposeAsync

Added before v1.9 jsHandle.DisposeAsync

The jsHandle.dispose method stops referencing the element handle.

使用方式

await JsHandle.DisposeAsync();

傳回值


EvaluateAsync

Added before v1.9 jsHandle.EvaluateAsync

Returns the return value of expression.

This method passes this handle as the first argument to expression.

If expression returns a Promise, then handle.evaluate would wait for the promise to resolve and return its value.

使用方式

var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));

參數

  • expression string#

    JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.

  • arg EvaluationArgument? (optional)#

    Optional argument to pass to expression.

傳回值

  • [object]#

EvaluateHandleAsync

Added before v1.9 jsHandle.EvaluateHandleAsync

Returns the return value of expression as a JSHandle.

This method passes this handle as the first argument to expression.

The only difference between jsHandle.evaluate and jsHandle.evaluateHandle is that jsHandle.evaluateHandle returns JSHandle.

If the function passed to the jsHandle.evaluateHandle returns a Promise, then jsHandle.evaluateHandle would wait for the promise to resolve and return its value.

See Page.EvaluateHandleAsync() for more details.

使用方式

await JsHandle.EvaluateHandleAsync(expression, arg);

參數

  • expression string#

    JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.

  • arg EvaluationArgument? (optional)#

    Optional argument to pass to expression.

傳回值


GetPropertiesAsync

Added before v1.9 jsHandle.GetPropertiesAsync

The method returns a map with own property names as keys and JSHandle instances for the property values.

使用方式

var handle = await page.EvaluateHandleAsync("() => ({ window, document }");
var properties = await handle.GetPropertiesAsync();
var windowHandle = properties["window"];
var documentHandle = properties["document"];
await handle.DisposeAsync();

傳回值


GetPropertyAsync

Added before v1.9 jsHandle.GetPropertyAsync

Fetches a single property from the referenced object.

使用方式

await JsHandle.GetPropertyAsync(propertyName);

參數

  • propertyName string#

    property to get

傳回值


JsonValueAsync

Added before v1.9 jsHandle.JsonValueAsync

Returns a JSON representation of the object. If the object has a toJSON function, it will not be called.

note

The method will return an empty JSON object if the referenced object is not stringifiable. It will throw an error if the object has circular references.

使用方式

await JsHandle.JsonValueAsync();

傳回值

  • [object]#