---
title: "webView(_:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)"
framework: webkit
role: symbol
role_heading: Instance Method
path: "webkit/wkuidelegate/webview(_:runjavascriptalertpanelwithmessage:initiatedbyframe:completionhandler:)"
---

# webView(_:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)

Displays a JavaScript alert panel.

## Declaration

```swift
optional func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping @MainActor @Sendable () -> Void)
```

```swift
optional func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo) async
```

## Parameters

- `webView`: The web view invoking the delegate method.
- `message`: The message to be displayed.
- `frame`: Information about the frame whose JavaScript process initiated this call.
- `completionHandler`: The completion handler to call after the alert panel has been dismissed.

## Discussion

Discussion For user security, implementations of this method should call attention to the fact that a specific website controls the content in this panel. A simple formula for identifying the controlling website is frame.request.URL.host. The panel should have a single OK button.

## See Also

### Displaying UI panels

- [webView(_:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:)](webkit/wkuidelegate/webview(_:runjavascriptconfirmpanelwithmessage:initiatedbyframe:completionhandler:).md)
- [webView(_:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:)](webkit/wkuidelegate/webview(_:runjavascripttextinputpanelwithprompt:defaulttext:initiatedbyframe:completionhandler:).md)
- [webView(_:showLockdownModeFirstUseMessage:completionHandler:)](webkit/wkuidelegate/webview(_:showlockdownmodefirstusemessage:completionhandler:).md)
- [WKDialogResult](webkit/wkdialogresult.md)
