cefsharp/CefSharp · error · ArgumentException
An IFrame instance is required.
Error message
An IFrame instance is required.
What it means
Thrown by ScriptedMethods.ActiveElementAcceptsTextInput when the frame argument is null. The extension method needs a live IFrame to execute JavaScript that inspects document.activeElement. Note it uses ArgumentException (not ArgumentNullException) and the older string param name form.
Source
Thrown at CefSharp.Example/ScriptedMethods.cs:26
namespace CefSharp.Example
{
/// <summary>
/// Methods whose functionaity is mostly implemented by evaluating or
/// executing scripts in the browser.
/// </summary>
public static class ScriptedMethods
{
/// <summary>
/// Determine if the active element in a frame accepts text input.
/// </summary>
/// <param name="frame">Test the active element in this frame.</param>
/// <returns>True if the active element accepts text input.</returns>
public static async Task<bool> ActiveElementAcceptsTextInput(this IFrame frame)
{
if (frame == null)
{
throw new ArgumentException("An IFrame instance is required.", "frame");
}
// Scripts should be minified for production builds. The script
// could also be read from a file...
const string script =
@"(function ()
{
var isText = false;
var activeElement = document.activeElement;
if (activeElement) {
if (activeElement.tagName.toLowerCase() === 'textarea') {
isText = true;
} else {
if (activeElement.tagName.toLowerCase() === 'input') {
if (activeElement.hasAttribute('type')) {
var inputType = activeElement.getAttribute('type').toLowerCase();
if (inputType === 'text' || inputType === 'email' || inputType === 'password' || inputType === 'tel' || inputType === 'number' || inputType === 'range' || inputType === 'search' || inputType === 'url') {
isText = true;View on GitHub (pinned to 16bc6e0711)
Solutions
- Ensure the browser is initialized before accessing MainFrame.
- Null-check the frame before calling the extension.
- Re-fetch the frame at call time rather than caching.
Example fix
// before var accepts = await frame.ActiveElementAcceptsTextInput(); // after if (frame == null || !frame.IsValid) return false; var accepts = await frame.ActiveElementAcceptsTextInput();
Defensive patterns
Strategy: validation
Validate before calling
if (frame == null || !frame.IsValid) return false; return await frame.ActiveElementAcceptsTextInput();
Type guard
public static bool IsFrameUsable(IFrame f) => f != null && f.IsValid;
Try / catch
try { return await frame.ActiveElementAcceptsTextInput(); }
catch (ArgumentException ex) when (ex.ParamName == "frame") { return false; } Prevention
- Ensure browser is initialized before accessing MainFrame.
- Null-check frame before calling scripted extensions.
- Check IsValid as well as null.
When it happens
Trigger: Calling frame.ActiveElementAcceptsTextInput() when frame is null — typically because MainFrame was accessed before browser initialization or after disposal.
Common situations: Calling the extension on a frame reference captured too early. Race with browser disposal in a WinForms/WPF closing handler.
Related errors
AI-assisted analysis of cefsharp/CefSharp@16bc6e0711 (2026-08-13).
Data as JSON: /api/errors/70fbfc4ac458859d.
Report an issue: GitHub.