Since the introduction of client-side web technologies such as JavaScript, web documents have become increasingly dynamic, allowing users to interact directly with the web document without the browser making time-consuming requests to a server for each content change. Interacting with a data table to sort columns or filter data, changes to the Document Object Model (DOM) element opacity/location/dimensions/content, and asynchronously fetching and displaying data are just some examples of how web documents have become progressively richer with dynamic content and interactions.
Because web document content can be modified within the user's browser, website developers and providers do not have a clear insight into how their audience is using and interacting with the web documents or web applications. Despite having created the web document content, but because of the large amount of permutations of how users can interact with an individual document or groups of documents, providers, designers, operators, and web document creators seek an accurate and efficient way to capture how users interact with their web documents to playback and analyze the remote interactions. Traditionally, the network to desktop browsers was viewed as reliable and adhering to fairly consistent and predictable performance patterns. In the new environment where users increasingly access data from any device, and over widely varying network conditions, the proposition that performance is consistent is no longer valid. Users may see only partial content before getting frustrated and leaving a page or website. They may get frustrated due to content that does not even come from the primary website, but instead is sourced from Content Distribution Networks or external advertising or social media sites.
Products can capture graphical user interface changes on a remote web document. Current capture systems have approached analysis of remote web document events first using log files, and later using either server-side packet capture systems or a client-side capture agent communicating with a server-side storage and analysis system. An advantage exists in combining the server-side packet capture and client-side capture agent, as both capture overlapping data, and the most recent art has not been able to make efficient use of combining the two methods.
Attempts to keep a client-side capture agent's data in sync with a replay engine have met various challenges, such as client-side plugins or server-delivered scripts that modify the DOM prior to document load completion and changes to adjacent text nodes resulting in a merging of a node during replay. To compensate for these challenges, systems have been required to send a new copy of the entire DOM or HTML as viewed by the remote browser back to the server-side web session storage and analysis engine, sometimes more than once on a single document to “sync” the replay engine with the actual document being viewed remotely with the client-side capture agent. However, this inefficiency of sending the full HTML from the client both consumes additional client bandwidth and can slow other interactions, for example, the client web browser fetching the next document or new data.
Products can also capture user interaction events on a remote web document. Specifically with respect to capturing mouse clicks and mouse movement, systems have approached tracking of these type of events by capturing the Cartesian coordinates where a mouse moves, and the Cartesian coordinates of where a user performs mouse clicks. This has been moderately effective in the past. However, as the number of devices used to access web documents increase and the number of varying screen displays increases, web designers have transitioned to a more dynamic, or responsive, document design, where the content layout changes dynamically based on the client's screen size. As such, simply capturing Cartesian coordinates is ineffective and inaccurate at helping web operators and designers analyze how users interact with their document, as the results are not clear with respect to what the user clicked or what content a mouse went over, in, or out of.
Therefore, it is desirable to provide new techniques that address these and other problems.