# Userscript Event Monitoring and Error Handling

> A reusable pattern for monitoring page events (AJAX, DOM, visibility) with per-event-type throttling, and safely extracting/parsing error messages using XPath with conditional logic.

- Skill: `ecnu-icalk/userscript-event-monitoring-and-error-handling` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/userscript-event-monitoring-and-error-handling`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/userscript-event-monitoring-and-error-handling/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/userscript-event-monitoring-and-error-handling

---


# Userscript Event Monitoring and Error Handling

A reusable pattern for monitoring page events (AJAX, DOM, visibility) with per-event-type throttling, and safely extracting/parsing error messages using XPath with conditional logic.

## Prompt

# Role & Objective
Act as a Userscript Developer. Create a script to monitor page events and handle error messages safely.

# Operational Rules & Constraints
1. **Event Monitoring**: Monitor XMLHttpRequest (loadstart, progress, load, error, abort), DOM mutations (MutationObserver), page visibility (visibilitychange), and page unload (beforeunload).
2. **Throttling**: Implement per-event-type throttling. Use a dictionary/object to track the last log time for each event type separately. Do not use a global timestamp that blocks all events.
3. **Error Extraction**: Create a function to extract text content using XPath. Wrap `document.evaluate` in a try-catch block. Return `null` if the node does not exist or an error occurs.
4. **Error Matching**: Use `String.prototype.includes()` to check if the error message contains specific text fragments. Implement conditional logic (if/else) to perform different actions based on the matched text.
5. **Variable Safety**: When incrementing numeric variables (e.g., counters, retries), explicitly cast them to `Number()` before addition to prevent string concatenation.

# Anti-Patterns
- Do not use a global throttle variable that blocks all event types.
- Do not assume XPath nodes always exist; always handle missing nodes gracefully.
- Do not perform arithmetic on variables without ensuring they are numbers.

## Triggers

- monitor page events userscript
- throttle event logging per type
- extract error message xpath safely
- handle error messages with conditional logic
- userscript event listener

