---
title: WKScriptMessageHandler
framework: webkit
role: symbol
role_heading: Protocol
path: webkit/wkscriptmessagehandler
---

# WKScriptMessageHandler

An interface for receiving messages from JavaScript code running in a webpage.

## Declaration

```swift
@MainActor protocol WKScriptMessageHandler : NSObjectProtocol
```

## Overview

Overview Adopt the WKScriptMessageHandler protocol when your app needs a way to respond to JavaScript messages in the web view. When JavaScript code sends a message that specifically targets your message handler, WebKit calls your handler’s userContentController(_:didReceive:) method. Use that method to implement your response. For example, you might update other parts of your app in response to web content changes. To call your message handler from JavaScript, call the function window.webkit.messageHandlers.<messageHandlerName>.postMessage(<messageBody>) in your code. You specify the value of <messageHandlerName> when you install your message handler in a WKUserContentController object. note: If you want to provide a response back to JavaScript, implement your message handler using the WKScriptMessageHandlerWithReply protocol instead.

## Topics

### Receiving Messages

- [userContentController(_:didReceive:)](webkit/wkscriptmessagehandler/usercontentcontroller(_:didreceive:).md)
- [WKScriptMessage](webkit/wkscriptmessage.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Adding and Removing Message Handlers

- [add(_:name:)](webkit/wkusercontentcontroller/add(_:name:).md)
- [add(_:contentWorld:name:)](webkit/wkusercontentcontroller/add(_:contentworld:name:).md)
- [addScriptMessageHandler(_:contentWorld:name:)](webkit/wkusercontentcontroller/addscriptmessagehandler(_:contentworld:name:).md)
- [removeScriptMessageHandler(forName:)](webkit/wkusercontentcontroller/removescriptmessagehandler(forname:).md)
- [removeScriptMessageHandler(forName:contentWorld:)](webkit/wkusercontentcontroller/removescriptmessagehandler(forname:contentworld:).md)
- [removeAllScriptMessageHandlers(from:)](webkit/wkusercontentcontroller/removeallscriptmessagehandlers(from:).md)
- [removeAllScriptMessageHandlers()](webkit/wkusercontentcontroller/removeallscriptmessagehandlers().md)
- [WKScriptMessageHandlerWithReply](webkit/wkscriptmessagehandlerwithreply.md)
