This document describes version 5 of Unblu. If you’re using the latest major version of Unblu, go to the documentation of the latest version. The support period for version 5 ended on 22 November 2021. We no longer provide support or updates for this version. You should upgrade to the latest version of Unblu. |
Limitations of Embedded Co-browsing
Embedded co-browsing relies on reading and transmitting the DOM structure of a page on the visitor’s browser and re-assembling it on the agent’s browser. Because of inherent limitations in the way browser’s work, there are aspects of a page that may be difficult or impossible to reproduce using this technique. The following is an overview of the limitations that may be encountered when using embedded co-browsing in an Unblu-enabled website. If you want to use embedded co-browsing on your website, you should take these limitations into account when designing or adapting the site.
TECHNOLOGY / DESIGN PATTERNS | WORKS WITH EMBEDDED CO-BROWSING | ||
---|---|---|---|
Scalable Vector Graphics (SVG) |
OK |
(with some limitations) |
|
svg animation |
Warning |
(animations on visitor and agent side are not in sync) |
|
HTML 5 |
OK |
(with some limitations - see below) |
|
|
Warning |
(input fields are rendered by the browser. Thus, look and feel may differ when visitor and agent use different browsers) |
|
|
OK |
canvas can be disabled for security reasons |
|
|
Not supported |
(does not display on the agent side) |
|
Web Components |
(with some limitations - see below) |
||
Custom Elements specification |
Ok |
||
Shadow DOM specification |
Not supported |
||
HTML Template specification |
Ok |
||
ES Module specification |
Ok |
||
HTML Framesets |
Not supported |
(iframes are supported - for cross origin iframes: see below) |
|
CSS |
OK |
(with some limitations - see below) |
|
OK |
|||
OK |
|||
Warning |
|||
Not supported |
(current status with W3C is working draft - not an official specification yet) |
||
CSS pseudo classes |
Warning |
(elements shown when hovering on visitor side are not displayed on agent side) |
|
browser specific properties (-moz-gradient etc) |
Warning |
(not supported in on premises setups with Resource History turned on) |
|
Internet Explorer "filters" |
Warning |
||
CSS function style property values |
Warning |
supported are: |
|
css3 animations |
Warning |
(not in sync between visitor and agent) |
|
Not supported |
(current status with W3C is Candidate Recommendation) |
||
Cross Origin (x-origin) |
OK |
(see details below) |
|
x-origin iframes |
OK |
(snippet must be contained in all iframe pages) |
|
CROSS ORIGIN RESOURCE SHARING (CORS) |
OK |
||
Changing protocol, origin or port in a running co-Browsing Session |
Warning |
(works with limitations when only subdomains are changed) |
|
Javascript |
OK |
(with some limitations - see below) |
|
Javascript Navigation |
Warning |
(page elements shown on "mouseover" cannot be triggered on agent side) |
|
Javascript alert, confirm, prompt |
Not supported |
(all operations that stop javascript entirely lead to problems with Unblu) |
|
Single Page Application (SPA) |
OK |
||
Warning |
(depending on captcha technology, agent may see another captcha than visitor) |
||
Legacy |
Not supported |
(see below) |
|
Not supported |
|||
Adobe Flash |
Not supported |
(banner or videos may work but visitor and agent are out of sync) |
|
Microsoft Silverlight |
Not supported |
(banner or videos may work but visitor and agent are out of sync) |
|
Java Applets |
Not supported |
(content will not be transmitted) |
|
Active X Objects |
Not supported |
(disabled for security reasons) |
Limitations of Virtualized Environments
Virtualized environments, such as Citrix, can have latency problems with Rich Internet Applications. If you are using a virtualized environment and are having problems with "double-hop latency" you can install a browser locally. See the Citrix Local App Access page for details.
Agent Side Limitations
Embedded co-browsing should only be used in View & Point mode. While it is possible to extend this functionality, the effort required can be significant as 'unknown' features of the site (such as JavaScript(s) and forms) can cause difficulties. Using embedded co-browsing the agent can observe the actions of the visitor and they can move their pointer but they cannot interact with the page; only the visitor can trigger actions. (Essentially, the page is 'visually' recreated.) The permitted agent actions are listed in the table below but we only recommend implementing the first two entries (eventsupport.back & eventsupport.change) which allow the agent to move forward and back in the browser and to enter text (although entering text into forms can be problematic if the forms have any associated dynamic behavior).
The embedded co-browsing use case is when your agents will not be expected or required to perform any actions on the page. The visitor remains in control at all times. The agent can watch and they can use their mouse to point: that is all. If you need your agents to do more than viewing and pointing then you should first review whether using 'embedded co-browsing' is the correct strategy. For example, it may be more appropriate to use Universal co-browsing rather than attempting to 'squeeze' extra features out of an embedded implementation. See below for more specific information regarding the limitations imposed by sites that contain forms and JavaScript.
The Agent Cannot Trigger onChange() Form Actions
Some forms use dynamic actions that modify parts of the form when the visitor makes specific inputs. For example, the form may change the address fields depending on the country the customer selects. From Unblu’s perspective, the problem is that the actions are triggered only when the user makes a manual input, and not when Unblu fills the customer’s form with input from the agent.
Therefore, when an agent changes a form field, such as the customer’s home country, the form will not update other fields, such as the street address.
This behavior can, in principle, be changed with additional JavaScript programming on the page but it would mean, for example, writing a script that checks the content of the respective form fields once or twice per second, instead of relying on the JavaScript onChange() event.
To test this behavior on your site simply attempt to fill-in a form and check if any of the form content changes. |
The Agent Does not Trigger JavaScript Events
Most interactions between a page and the user happen via built-in browser behaviors, such as clicking a link or a button. However, it is also possible that the page uses JavaScript to track what the user does, and then react accordingly. However, this will only track the customer’s mouse pointer, and not the agent’s. Consequently, the agent cannot trigger some actions on the page.
The customer can operate the website as usual. The Agent may find it impossible to trigger some actions on the website (such as navigating a dynamic image gallery).
To detect this behavior on a site, switch off JavaScript and see if you can operate the website. Any behavior that stops working is due to the page using JavaScript. For applications that use JavaScript to run at all, such as a dynamic image gallery, it is difficult to see whether Agents can operate it. |
You can find these 'Agent side actions' under the 'event support' section in the advanced configuration mode of the server (4.2 server, or above, required). The settings are marked 'Internal'. |
Agent side actions | Works with embedded co-browsing | |
---|---|---|
eventsupport.back |
Navigate to the previous page in the navigation history (history.back()) |
|
eventsupport.change |
Warning |
Change the text value of |
eventsupport.click |
Warning |
Click an element |
eventsupport.forward |
Navigate to the next page in the navigation history (history.forward()) |
|
eventsupport.mark |
Trigger marker (also active in view and point mode) |
|
eventsupport.move |
Warning |
Experimental support for mouse move events. |
eventsupport.navigateTo |
Navigate to a URL (enter URL in navigation bar on agent side and hit enter). |
|
eventsupport.scroll |
Change scroll position |
|
eventsupport.selection |
Change selected options in select elements, checkboxes and radio buttons |