From 7974fdcfa3cb5ca17fe938639290e5d0ee4b5933 Mon Sep 17 00:00:00 2001 From: Josh at WLTechBlog Date: Tue, 19 Aug 2025 09:27:49 -0500 Subject: [PATCH] bump --- daemon/daemon.go | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index abf1391..d9336e6 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -1965,11 +1965,8 @@ func (d *Daemon) selectElement(tabID, selector, value string, selectionTimeout, err = element.Select([]string{value}, true, rod.SelectorTypeText) if err != nil { // If text selection failed, use JavaScript as fallback - // Use the simplest approach that works with rod - just set the value and dispatch event - // Escape quotes in selector and value to avoid JavaScript syntax errors - escapedSelector := strings.ReplaceAll(selector, "'", "\\'") - escapedValue := strings.ReplaceAll(value, "'", "\\'") - script := fmt.Sprintf(`document.querySelector('%s').value = '%s'; document.querySelector('%s').dispatchEvent(new Event('change', { bubbles: true })); document.querySelector('%s').value`, escapedSelector, escapedValue, escapedSelector, escapedSelector) + // Use double quotes for the JavaScript string so single quotes in selectors work + script := fmt.Sprintf(`document.querySelector("%s").value = "%s"; document.querySelector("%s").dispatchEvent(new Event("change", { bubbles: true })); document.querySelector("%s").value`, selector, value, selector, selector) // Execute JavaScript and get the result result, err := page.Eval(script) @@ -3579,11 +3576,8 @@ func (d *Daemon) interactMultiple(tabID, interactionsJSON string, timeout int) ( err = element.Select([]string{interaction.Value}, true, rod.SelectorTypeText) if err != nil { // If text selection failed, use JavaScript as fallback - // Use the simplest approach that works with rod - just set the value and dispatch event - // Escape quotes in selector and value to avoid JavaScript syntax errors - escapedSelector := strings.ReplaceAll(interaction.Selector, "'", "\\'") - escapedValue := strings.ReplaceAll(interaction.Value, "'", "\\'") - script := fmt.Sprintf(`document.querySelector('%s').value = '%s'; document.querySelector('%s').dispatchEvent(new Event('change', { bubbles: true })); document.querySelector('%s').value`, escapedSelector, escapedValue, escapedSelector, escapedSelector) + // Use double quotes for the JavaScript string so single quotes in selectors work + script := fmt.Sprintf(`document.querySelector("%s").value = "%s"; document.querySelector("%s").dispatchEvent(new Event("change", { bubbles: true })); document.querySelector("%s").value`, interaction.Selector, interaction.Value, interaction.Selector, interaction.Selector) // Execute JavaScript and get the result result, err := page.Eval(script) @@ -3780,11 +3774,8 @@ func (d *Daemon) fillFormBulk(tabID, formSelector, fieldsJSON string, timeout in err = element.Select([]string{fieldValue}, true, rod.SelectorTypeText) if err != nil { // If text selection failed, use JavaScript as fallback - // Use the simplest approach that works with rod - just set the value and dispatch event - // Escape quotes in selector and value to avoid JavaScript syntax errors - escapedSelector := strings.ReplaceAll(fieldResult.Selector, "'", "\\'") - escapedValue := strings.ReplaceAll(fieldValue, "'", "\\'") - script := fmt.Sprintf(`document.querySelector('%s').value = '%s'; document.querySelector('%s').dispatchEvent(new Event('change', { bubbles: true })); document.querySelector('%s').value`, escapedSelector, escapedValue, escapedSelector, escapedSelector) + // Use double quotes for the JavaScript string so single quotes in selectors work + script := fmt.Sprintf(`document.querySelector("%s").value = "%s"; document.querySelector("%s").dispatchEvent(new Event("change", { bubbles: true })); document.querySelector("%s").value`, fieldResult.Selector, fieldValue, fieldResult.Selector, fieldResult.Selector) // Execute JavaScript and get the result jsResult, err := page.Eval(script)