Patent Description:
Increasingly, online publication is replacing conventional, physical means for distributing content. For example, newspaper publishers are receiving increasing volumes of traffic at their websites, while selling fewer hard copies of the newspapers themselves. This presents a challenge for the publishers in terms of monetising the content they produce. While some publishers have instigated a pay-per-view or subscription service to access their online content, most have attempted to keep their online offerings free at the point of use. To support this model, publishers rely on advertising.

Indeed, advertising based revenue models are not limited to publishers of content but have been adopted by a large number of internet services. In selling advertisement space on a website, a decision has to be made as to the price that that space will cost. Today, advertising space is predominantly sold on either a pay-per-impression or a pay-per-click basis.

In a pay-per-impression model, a charge is levied each time the web page containing the advertisement is viewed. Records are kept each time a web page containing the advertisement is downloaded to a user, and a charge is levied to the advertiser according to the volume of downloads that have occurred.

A problem with current pay-per-impression techniques is that they do not accurately reflect whether the user engaged with the advertisement itself.

Indeed, there is no indication as to whether the advertisement was even viewed by the user. For example, the advertisement may be on a part of the web page that was not viewable in the user's browser window, or may even have failed to load. This creates uncertainty as to the value of the advertisement to the advertiser, and thereby suppresses demand for internet advertising.

The pay-per-click model addresses some of these concerns. In this model, payment is made for each occasion on which the user clicks on a link within the advertisement. However, while this does ensure (in the absence of fraud) that payment is only made in the case where a user engages with the advertisement, it is not appropriate for all circumstances. For example, many advertisements are intended to increase brand awareness passively, and would not wish to interfere with the user's experience. In general, the number of clicks on an advertisement will not be simply a function of the number of views it receives,
but will be affected by the success of that advertisement in enticing a click. Pay-per-click models are unable to distinguish between these factors.

Accordingly, it would be desirable to develop an approach which accurately reflects the number of times a particular advertisement has been viewed. Since
the visibility of the advertisement is not ensured simply because the host web page has been downloaded, a greater degree of accuracy is required.

One proposed solution is to monitor the area of the web page which is shown by a particular user's browser at a given moment. For example, knowing the dimensions of the browser's viewport and the position of the advertisement in the web page, it can be established whether the advertisement is in view (that is, within the browser's viewport) by observing the scroll position of the browser window (i.e. its vertical and horizontal position on the web page). Another solution alternatively or additionally senses the position of the mouse cursor on the web page <CIT> describes a method of trading interaction and view information for online advertising. W3C: "Page Visibility (W3C Working Draft <NUM> June <NUM>)" defines a means for site developer to programmatically determine the current visibility state of a page.

While these solutions can provide accurate data in the right circumstances, they are in practice of limited use. This is due to restrictions on the information that parties within the process are able to derive.

In particular, advertisements are often contained within (nested) iframes in a host web page. An iframe provides a region within a web page in which other web content may appear.

One important benefit of iframes for the publisher is that content within the iframe is unable to affect content in the host web page or even discover information regarding that page, as long as the iframe and the host web page are served from different domains. This means that the publisher can be secure in the fact that the advertisement will not corrupt the main content of the host web page.

However, since content within the iframe is not able to interact with the host web page, it is not possible for any client-side code served with the advertisement to discover, for example, the dimensions (height and width) of the host web page, or where the browser viewport is in relation to the host web page. Accordingly, it is not possible for any such client-side code to be used to discover whether the advertisement is in view. As such, when an iframe is used to serve an advertisement, techniques which attempt to infer whether an advertisement is in view from the location of the browser viewport relative to the host web page do not function. http://web. org/web/<NUM>/http://www. net/iframes/).

Accordingly, it would be desirable to provide a technique for establishing whether an advertisement has been viewed, even when the advertisement is served within an iframe or some other such restricted or sandboxed <NUM> environment.

According to a first aspect of the present invention, there is provided a computer implemented method for determining whether a region within a web page is in view, according to claim <NUM>. According to a second aspect, there is provided a computer program product according to claim <NUM>. According to a third aspect there is provided a system according to Claim <NUM>. Details of embodiments are provided in the dependent claims.

So, the present invention is able to assist in providing information as to whether a region within a web page is in view without requiring knowledge of the characteristics of the host web page. During rendering of the web page, behavioural characteristics that vary according to whether a test feature in the region is currently being displayed can be monitored to establish whether the region is in view or not in view. In this context, "in view" indicates that the region is within the browser's viewport, i.e. within a viewable portion of a web page that is shown by the browser. However, while the presence of the region within the browser's viewport is a necessary requirement, it may not be sufficient. For example, although in the browser's viewport, a region may be obscured from the user as a result of being in a background tab or for another reason. Thus, in general, a region is "in view" if it is viewable by a user and "not in view" if it is not viewable by a user, for whatever reason. In particular preferred embodiments, the region contains an advertisement, and in this way information as to whether an advertisement is in view can be derived.

The present invention can take advantage of the fact that web browsers and web-browser plugins make particular provisions whereby, for example, elements of a web page that are viewable within the browser viewport may be redrawn more frequently than elements that are on the web page but in an area not currently contained within the browser's viewport. This behavioural difference together with others like the clock rate or the number of local connections that can be made, is the result of efforts to reduce unnecessary processing of elements of web pages that are not currently in view. The present invention can make use of this behavioural difference to infer information regarding whether test features are in view, and, from this, whether advertisements are in view.

Accordingly, behavioural characteristics may relate to the manner in which the one or more test features are handled during rendering of the web page. For example, in preferred embodiments, the step of monitoring a behavioural characteristic comprises monitoring behaviour of an application programming interface (API), such as a browser API or a plugin API, as it relates to the at least one test feature. The behaviour of an API may be monitored directly or indirectly. For example, a plugin might receive a clipping rectangle from the browser, through the "NPP_SetWindow" call in the Netscape Plug-in Application Programming Interface (NPAPI), detailing which portion of a drawable feature is currently in view. Using this information the plugin may vary the frame progression rate of a test feature it is generating. In certain embodiments client-side code associated with a test feature could be provided to monitor the browser NPAPI to determine whether part of or the whole of the test feature is in view. In other embodiments, client-side code could be used to monitor the frame progression rate of the plugin associated with the test feature. In some preferred embodiments, the plugin API is provided by the Flash environment.

In preferred embodiments, the step of monitoring the behavioural characteristic is carried out by code operating in a restricted environment such that it is prevented from discovering features of the host web page. In preferred embodiments, the restricted or sandboxed environment in which the code operates is an iframe (potentially nested within other iframes) within the host web page. The present invention finds particular utility in the context of iframes since it does not require knowledge of the host web page, instead monitoring a behavioural characteristic of the test feature itself which varies according to whether that feature is being displayed. This is especially valuable when the content of the iframe and the host web page are served from different domains, since in these circumstances it is not possible for elements served within the iframe to interact with or discover information about the host web page.

Examples of restricted environments that may be used as an alternative or in addition to an iframe in the context of the present invention include: a frame; a Microsoft Web Sandbox; a dojox. sandbox from the Dojo Toolkit; a Scalable Vector Graphics (SVG) document; or Cajoled script generated by Caja. Restricted environments may prevent the code carrying out the monitoring of the behavioural characteristic from having access to some or all of: the position of the region relative to the host web page; the vertical and horizontal scroll positions of the viewport of the host page; and the dimensions of the viewport of the host web page.

In preferred embodiments, the behavioural characteristic comprises a frame progression rate of the test feature. For example, the behavioural characteristic may be the rate at which frames within a Adobe Flash Small Web Format (SWF) applet progress. Alternatively or additionally, the behavioural characteristic may comprise a timer clock rate and/or the rate at which local connections can be made. In other examples, the behavioural characteristic may be animation timing of the at least one test feature or the rate at which a browser calls a browser plugin to repaint itself. In particular, animation timing may be monitored through a WindowAnimationTiming API.

In preferred embodiments, the step of monitoring the behavioural characteristic occurs at a client device, and the method further comprises: transmitting information relating to the behavioural characteristic from the client device to a server. Monitoring the behavioural characteristic at client devices is an efficient way to obtain information as to the activity of that client device, while recording information at a central server allows results to be collated from a number of sources. As such, this aspect of preferred embodiments makes optimal use of the architecture of a client-server network.

Preferably, the at least one test feature is any of: an element; a document; a plugin; or an applet. In preferred embodiments, the at least one test feature is an applet, such as an Adobe Flash SWF, Java or Silverlight applet. In one particular preferred embodiment, the at least one test feature is an Adobe Flash SWF applet and the step of monitoring a behavioural characteristic comprises monitoring a plugin API provided by the Flash environment.

In preferred embodiments, the step of monitoring the behavioural characteristic is carried out by client-side code. Client-side code is code which operates on a client device. The client device in this context is the device which displays the host web page to the user. The client-side code may take the form of, for example: client-side script; an applet; or a plugin. In particular, client-side script may be implemented in at least one of: ECMAScript, JavaScript, Jscript, VBScript, ActionScript or OpenGL Shading Language (GLSL).

In preferred embodiments, the step of determining whether the region is in view or not in view comprises determining one or more of: the proportion of the at least one test feature that is in view; the height and width of the at least one test feature that is in view; whether any part of the at least test feature is in view; and whether all of the at least one test feature is in view. By analysing these details of whether the test feature is in view, a more detailed picture can be established regarding which parts of the region are in view.

Preferably, the step of determining whether the region is in view comprises comparing the monitored behavioural characteristic with one or more control values. For example, the control values may be used as threshold values, whereby if the behavioural characteristic exceeds a certain value the region is determined to be in view (or not in view, as appropriate). This is an efficient method of judging whether a frame progression rate indicates that the region is in view or not. For example, the test features can be determined as in view if the frame progression rate exceeds a threshold value.

In some preferred embodiments, the method further comprises generating a control feature which is not viewable, monitoring a behavioural characteristic of the control feature, and determining the at least one comparison value in dependence on the monitored behavioural characteristic of the control feature. A control feature that is not viewable is one that will not be displayed to a user in any circumstances. This aspect of the present invention makes use of the fact that a browser or plugin will render features of the web page at a nominal rate, even if those features are located such that they will never be shown. For example, should the test feature be delivered in an iframe and the control feature also be delivered in the iframe, the control feature may be located outside the visible dimensions of the iframe meaning that it is never shown to the user (since any aspect of the iframe is unable to influence the host web page). Accordingly, the behavioural characteristic of the control feature can give an impression of the likely behavioural characteristic of the test feature when it is not in view. For example, the frame progression rate of the test feature can be compared with the frame progression rate of the control feature, and the test feature can be considered in view if its frame progression rate exceeds that of the control feature.

In some preferred embodiments, the method further comprises varying the position of the test feature between a position within the test region and a position in which the test feature is not viewable. Accordingly, the test feature may be a dynamic test feature. In this context, determining whether the region is in view or not in view may comprise determining whether the monitored behavioural characteristic varies as the position of the test feature is varied.

In some circumstances, the control value with which the behavioural characteristic of the test feature is compared is chosen in dependence on a previously determined state of the test feature. In particular, the control value may be chosen in dependence on whether the test feature was previously considered to be in view or not in view. For example, the control value for a test feature to be determined as in view when the test feature has previously been determined as not in view may be greater than the control value if the test feature has previously been determined as in view. This may help account for changes in the conditions in which the browser or plugin operates, and limits the chance that minor fluctuations due to external factors will be interpreted as a change of state of the test features from in view to not in view or vice versa.

Alternatively or additionally, the set of comparison values may be determined using heuristic or empirical methods. These methods may take account of the circumstances in which the web page is rendered, such as the browser used to render the web page or the operating system environment. As such, allowances can be made for other reasons for variation in the redraw rate which do not depend on whether the feature is in view or not in view.

Preferably, the at least one test feature is located at an edge of the region in which the advertisement is found. This means that values retrieved from the test feature can clearly establish whether that edge of the region is in view or not. In preferred embodiments, a plurality of test features are located at edges of the region. In this manner, the invention can assist in determining whether the whole of the advertisement or a particular proportion of the advertisement is in view or not in view. In particular embodiments, at least some of the test features are located at corners of the region.

In preferred embodiments, the at least one test feature is transparent and/or a test pixel. These aspects limit the impact of the at least one test feature on the region in which the advertisement is found, allowing it to serve its primary purpose.

In preferred embodiments, an advertisement is provided in the region. This is particularly valuable context in which to discover whether the region is in view, and may provide significant commercial advantages. In some preferred embodiments, the at least one test feature may form part of or the whole of the advertisement itself.

It can also be appreciated that the invention can be implemented using computer program code. Indeed, according to a further aspect of the present invention, there is therefore provided a computer program product comprising computer executable instructions for carrying out the method of the first aspect. The computer program product may be a physical storage medium such as a Read Only Memory (ROM) chip. Alternatively, it may be a disk such as a Digital Versatile Disk (DVD-ROM) or Compact Disk (CD-ROM). It could also be a signal such as an electronic signal over wires, an optical signal or a radio signal such as to a satellite or the like. The invention also extends to a processor running the software or code, e.g. a computer configured to carry out the method described above.

Preferred embodiments of the present invention will now be described with reference to the accompanying drawings, in which:.

Referring to <FIG>, a web page <NUM> is shown. The web page comprises a main area <NUM> in which content is displayed. The web page further comprises an advertisement <NUM>. In this example, the advertisement <NUM> is contained within an iframe.

<FIG> also illustrates a browser window <NUM>. Only elements of the web page <NUM> which appear within a viewable portion of the browser window <NUM> are viewable to a user at a particular time. These elements of the web page <NUM> are said to be in view. Elements which are not contained within a viewable portion of the browser window <NUM> are said to be not in view.

It is known that a user accessing the web page <NUM> will be able to move the browser window <NUM> around the web page <NUM> to view different elements of the page <NUM>. The position of the browser window is indicated by the scroll bars <NUM>. The user may also be able to zoom in or zoom out of the host web page <NUM>, a process which effectively changes the size of the browser window <NUM> relative to the host web page <NUM>. As a result of this, certain elements of the web page <NUM> will be in view at some times and not in view at others.

As explained in the background above, this creates a difficulty in establishing whether the advertisement <NUM> is in view, which will of course be of interest to the advertiser producing the advertisement <NUM> when deciding its value. One prior art solution relies on knowledge of the position of the scroll bars <NUM>. However, this information cannot be discovered by elements provided with the advertisement <NUM>, since this is contained within an iframe on an external domain. This is because iframes are specified to isolate the host web page <NUM> from content contained within the iframe.

In alternative embodiments, other restricted or sandboxed environments than iframes could be used, for example a frame; Microsoft Web Sandbox; dojox. sandbox from the Dojo Toolkit; an SVG document; or Cajoled script generated by Caja. Alternatively or in addition to sandboxing the client-side monitoring code could be restricted to a limited subset of available features, for example ADsafe; ECMAScript <NUM> strict mode; or Cajita.

<FIG> also shows a test feature <NUM> provided within the advertisement <NUM> and a control feature <NUM> located outside of the visible bounds of the iframe but still delivered through the iframe. The test feature <NUM> and the control feature <NUM> are both provided through the iframe containing the advertisement <NUM>. As a result, the control feature <NUM> will never be viewable to the user since it is in a region outside of the iframe which therefore cannot be affected by content delivered through the iframe. Instead, the control feature <NUM> is used to understand the browser's response to elements of the page which are not in view, as will be described in greater detail below. Additionally, to remove all intrusion the test feature <NUM> is placed behind the advertisement <NUM>.

The test feature <NUM> and the control feature <NUM> may be implemented as test and control pixels respectively. For example, the test feature <NUM> may be a single, transparent test pixel overlaid on the advertisement <NUM>. In this way, the test feature <NUM> provides minimal intrusion into the functionality of the advertisement <NUM>.

<FIG> illustrates a system for the delivery of content to a user that may be used in accordance with the present invention. The system comprises a research server <NUM>, an advertiser <NUM>, an ad server <NUM>, a publisher <NUM> and the client device <NUM> operated by the user. <FIG> also indicates communications channels between these features. These communications may take place over any type of appropriate communications network, including Local Area Networks (LANs), Wide Area Networks (WANs) and so on, but in a preferred embodiment each of the research server <NUM>, the advertiser <NUM>, the ad server <NUM>, the publisher <NUM> and the client device <NUM> are connected to the internet and this is used to carry out communications between these features.

The research server <NUM>, the advertiser <NUM>, the ad server <NUM> and the publisher <NUM> may be implemented using conventional computer server systems. Each of these participants in the system may represent a single computer server or may represent a collection of computer servers as appropriate. The skilled person will also recognise that various participants may share computer hardware or be hosted on the same machines if convenient.

The client device <NUM> may be implemented as any network enabled device. For example, the client device <NUM> may be implemented as a personal computer, laptop computer, tablet computer, smartphone or the like. In preferred embodiments, the client device <NUM> is an internet enabled device, but the skilled person will appreciate that alternative methods for delivering content to the client device <NUM> may be employed.

The operation of this embodiment of the present invention will now be described with reference to <FIG>, which shows the activities of each of the participants illustrated in <FIG> during the delivery of a web page <NUM> to a client device <NUM>.

At step s1, the advertiser <NUM> generates an advertisement <NUM>. The advertisement <NUM> may provide information about a product sold by the advertiser <NUM>, for example, and may include elements such as text, images, moving images, sound or a combination of these. The advertisement <NUM> may also include one or more hyperlinks, so that when the advertisement <NUM> is rendered by the client device <NUM>, it is possible to select these hyperlinks in order to be redirected to further content provided by the advertiser <NUM>. The advertisement may be encoded by the advertiser as a HyperText Mark-up Language (HTML) file.

At step s2, the research server <NUM> sends client-side code to the advertiser <NUM> for incorporation in the advertisement <NUM>. In one example, the client side code is JavaScript. The client-side code is designed to allow the research server to retrieve information as to whether the advertisement <NUM> is in view when served with the web page <NUM>, as will be explained in greater detail below.

The client-side code is incorporated into the advertisement <NUM> at step s3, and is then sent by the advertiser <NUM> to the ad server <NUM> at step s4. In this example, the advertiser <NUM> can be understood as an organisation which wishes to promote a product, while the ad server <NUM> is operated by an organisation which offers to find advertising space for the advertiser <NUM>. Accordingly, the ad server <NUM> has a relationship with multiple advertisers and multiple publishers, and acts as an intermediary to assist in the placement advertisements with suitable publishers.

So, the advertisement <NUM> including the client-side code provided by the research server <NUM> is now hosted by the ad server <NUM>. The ad server <NUM> has a relationship with the publisher <NUM> by which advertisements are provided in the publisher's content. This is effected by the publisher <NUM> incorporating links to the ad server <NUM> in web pages it provides to users. These links are delivered within iframes. This is beneficial to the publisher <NUM> as content delivered in the iframe is isolated from affecting the host web page, and therefore the publisher <NUM> can be certain that the advertisements provided by the ad server <NUM> will not adversely affect the content it is publishing in the host web page.

Accordingly, a client device <NUM> may request a web page <NUM> from the publisher <NUM>, at step s5. The web page <NUM> is then returned to the client device <NUM> at step s6. The client device then renders this web page at step s7. The rendering process is typically undertaken by a browser operating on the client device <NUM>.

As explained above, the web page <NUM> contains an iframe. The iframe is linked to an address at the ad server <NUM>. Thus, when the browser operating at the client device <NUM> attempts to render the web page <NUM>, it will be instructed by the iframe to call further information from the ad server <NUM> to populate the iframe. This request is transmitted from the client device <NUM> to the ad server at step s8.

On receiving the request, the ad server <NUM> decides what content to return to the client device <NUM>. In this example, the ad server <NUM> returns the advertisement <NUM> provided by the advertiser <NUM> in which the client side code provided by the research server <NUM> has been incorporated, as described above. At step s9, the advertisement <NUM> is returned to the client device <NUM>.

As mentioned above, the advertisement <NUM> contains the client side code provided by the research server <NUM>. The client side code is executed by the client device at step s10 as part of the process of rendering the web page <NUM>. When the client side code is executed by the client device <NUM>, it is effective to request two identical applets, one for the test feature <NUM> and one for the control feature <NUM>, from the research server <NUM>, at step s11. At step s12, the applets are returned to the client device <NUM>. (In practice, the web browser may employ its cache to reduce these two requests for an identical resource into a single request. ) The applets may be, for example, Adobe Flash SWF applets, although the skilled person will recognise that other types of applet or resource may be used. In the preferred embodiment Adobe Flash SWF applets are provided and executed within the Flash environment. The Flash environment, by proxy, provides access to the browser API.

At step s13, the client-side code requested by the research server embeds the applets. The applets are embedded to form the test feature <NUM> and the control feature <NUM>. Since the control feature <NUM> is located in an area of the web page <NUM> outside of the visible boundaries of the iframe, the browser will never show the control feature <NUM> and will always treat it as if it is not in view. On the other hand, the browser will treat the test feature as in view when it falls within the browser window <NUM> and not in view when it is outside the browser window <NUM>.

As the browser renders the web page <NUM>, to handle the Adobe Flash SWF applets it will make calls via the browser API which allows the Flash environment to determine whether a feature is in view or not in view; for instance Safari on Mac OS X supplies the Flash environment with details of the clipping rectangle whenever the window geometry changes via the NPAPI. This increases efficiency of the browser by allowing the plugin to redraw elements that are known to be out of view at a lower rate than those elements which are known to be in view. Thus, the rate at which the plugin will progress the animation frames of the test feature <NUM> will depend on whether it is in view or not in view. Accordingly, the rate at which the animation frames progress, or the frame progression rate, is a behavioural characteristic relating to the test feature which varies according to whether the test feature <NUM> is being displayed, i.e. whether the test feature is in view or not in view. In this embodiment, the frame progression rate is used as a behavioural characteristic, but it is recognised that other characteristics may alternatively or additionally be used. For example, characteristics such as a timer clock rate and/or the rate at which local connections can be made may vary according to whether a test feature is currently being displayed. In some other examples, the behavioural characteristic may be a report from the browser API which directly indicates whether the test feature is or is not being displayed.

At step s14, the client side code records the rate at which the test feature's <NUM> and the control feature's <NUM> frames are progressed and uses these frame progression rates to determine whether the advertisement <NUM> is in view.

The frame progression rate of the test feature <NUM> can be compared with one or more control values. In this embodiment, at least one control value acts as a threshold value and is determined from the frame progression rates of the control feature <NUM>. Typically direct comparison with the frame progression rates of the control feature <NUM> is insufficient because of measurement error and also because of fluctuating frame progression rates of the control feature <NUM> during scrolling (i.e. as the viewport is moved relative to the host web page <NUM>). The process of comparison also typically requires the application of some smoothing model, because, for example, the recorded frame progression rates during state transition (i.e. during transitions from being in view to not in view and vice versa) are noisy. Given that the control feature <NUM> is always treated by the browser as not in view and the threshold is dependent on the frame progression rate of the control feature <NUM>, if the frame progression rate of the test feature <NUM> is, when compared, the same as or less than the threshold, it can be deduced that the test feature <NUM> is not in view. Alternatively, if the frame progression rate of the test feature <NUM> is, when compared, greater than the threshold, then the test feature <NUM> can be determined to be in view.

Since the test feature <NUM> is located within the same region of the web page as the advertisement <NUM>, determining whether the test feature <NUM> is in view provides an indication of whether the advertisement <NUM> is in view. As such, the client side code acts to analyse whether or not the advertisement <NUM> is in view by generating the test feature <NUM> and observing the rate at which its frames progress.

The client side code causes the client device <NUM> to return the results of this analysis to the research server <NUM>, at step s15. The research server <NUM> stores these results at step s16. The research server <NUM> may thus collate results of this kind each time an advertisement <NUM> within a web page <NUM> is in view and not in view at client device <NUM>. Thus the research server is able to provide information, at step s17, to the advertiser <NUM>, indicating the exposure that was provided to the advertisement <NUM> by the arrangement with the ad server <NUM>. Accordingly, the advertiser <NUM> is able to make informed commercial decisions as to the value of advertising in this way.

In the embodiment described above, a single test feature <NUM> is provided in the region in which the advertisement <NUM> is found. However, in other embodiments, multiple test features <NUM> may be used. Examples of arrays of test features that may be used are shown in <FIG>. Using an array of test features <NUM> can assist in determining whether the whole of the advertisement <NUM> is in view, or even which particular parts of an advertisement <NUM> are in view.

In the embodiment shown in <FIG>, a test feature is provided at each of the four corners of the advertisement <NUM>. In the given example it is known that the advertisement <NUM> and the browser window are rectangular and have aligned axes, it can therefore be determined with confidence that if all the test features <NUM> are in view then the entire advertisement <NUM> is in view. In fact, in these circumstances, such confidence may be achieved by a single pair of test features <NUM> placed at diagonally opposite corners of the advertisement <NUM>.

In <FIG>, a repeating array of test features <NUM> is provided across the full extent of the advertisement <NUM>. In this embodiment, when only a portion of the advertisement <NUM> is in view, this can be established by observing the differential frame progression rates for individual test features <NUM>.

As described above, the threshold value against which the frame progression rate of the test feature <NUM> is compared to determine whether the test feature <NUM> is in view can be established using a control feature <NUM>. However, alternative methods can be used to establish the threshold. For example, the threshold may take a predetermined value, which may have been established from empirical experiments or using heuristic analysis. In an alternative embodiment, the threshold value may be chosen in dependence on analysed attributes of the client device <NUM>, such as the browser rendering the web page <NUM>, the hardware specifications of the client device <NUM>, or the bandwidth of the client device's <NUM> network connection.

In some preferred embodiments, the threshold value depends on the previous state of the test feature <NUM>. That is to say, the threshold value may vary according to whether the test feature <NUM> was previously determined to be in view or not in view. For example, the threshold value for judging a test feature <NUM> to be in view when it was previously not in view may be higher than the threshold value for judging the test feature to be not in view when it was previously in view. This approach can be understood as providing a hysteresis curve, as illustrated in <FIG>.

In <FIG>, the x axis represents an inferred probability that the test feature is in view while the y axis represents the frame progression rate. The test feature <NUM> is determined to be in view when the probability exceeds <NUM>%. <FIG> illustrates that two threshold values may be appropriate in some circumstances, a lower threshold value <NUM> and a higher threshold value <NUM>. The lower threshold value <NUM> applies when the test feature <NUM> was previously considered to be in view, while the higher threshold value <NUM> applies when the test feature <NUM> was previously considered to be not in view. In this way, variations in the redraw rate that might arise due to the performance of the client device <NUM> are inhibited from causing changes in the determined state of the test feature <NUM>.

In some preferred embodiments, the lower threshold value <NUM> is established using a control feature <NUM> (i.e. the lower threshold value <NUM> is, or is determined in dependence on, the frame progression rate of the control feature <NUM>) while the upper threshold value <NUM> is established empirically.

In the embodiments described above, the test features <NUM> are provided separately from the advertisement itself <NUM>, meaning that the client side code provided by the research server <NUM> may be independent of the advertisement <NUM>. In these cases the test features <NUM> are preferably transparent and relatively small (for example, each test feature <NUM> may be a single pixel) in order to avoid interfering with the content of the advertisement <NUM>. This aspect may also limit the number of test features that are desirable in an array, since even if they are transparent, the test features <NUM> may interfere with hyperlinks provided in the advertisement <NUM>. However, in other embodiments, the test features <NUM> may be aspects of the advertisement <NUM> itself which must be redrawn, and these can be monitored during the rendering of the web page <NUM> to determine whether they are in view or not. When the test features <NUM> are part of the advertisement <NUM> itself, it may be possible for the majority or the entirety of the advertisement <NUM> to be formed of test features <NUM> without compromising the functionality of the advertisement <NUM>.

As described above, client side code is used to embed the test feature or test features <NUM> and monitor the frame progression rates. In alternative embodiments, the test feature or test features <NUM> may be served along with the advertisement <NUM> and the test feature or test features <NUM> may monitor and transfer the frame progression rates to the research server <NUM>. In a further alternative embodiment, the test feature or test features <NUM> may be part of or the whole of the creative of the advertisement <NUM> itself. In other embodiments, the test feature or test features <NUM> could be inbuilt into the container or player of the advertisement.

In the preferred embodiments, the client side code may be an applet and may obtain information regarding the frame progression rates directly or indirectly via an external browser application programming interface (API) such as the Netscape Plug-in Application Programming Interface (NPAPI), the Pepper Plug-in Application Programming Interface (PPAPI), LiveConnect, XPConnect, the npruntime API, or ActiveX. In other examples, an internal browser API as made accessible to the restricted or sandboxed client-side code may be used to obtain indications as to whether the feature is in view.

As described above, one or more control values with which the behavioural characteristic of the test feature <NUM> is compared may be established empirically by observing a behavioural characteristic of the control feature <NUM>. However, control values may also be established using heuristic methods. These heuristic methods may be developed using some or all of: the client device's User Agent (for example, the browser operating on the client device); the client device's operating system; or the client device's geographical location.

In addition to identifying whether the region is in view or not in view, the present invention may additionally identify other details regarding the region or parts of the region. In particular, in some preferred embodiments, a determination can be made as to whether the web page is scrolling. In particular, it is noted that a behavioural characteristic, such as the frame progression rate, or the test and/or control feature may vary according to whether the web page is scrolling. This variation can be used to establish whether the web page is scrolling. In one embodiment it can be determined that the region is in view and the page is scrolling when the frame progression rate of the control feature changes from a low state to a high state. This is illustrated in <FIG>.

By making additional determinations, the classifications "in view" and "not in view" may be divided into sub classifications such as: "in view and scrolling"; "in view and not scrolling"; "not in view and out of viewport"; and "not in view and occluded".

In the embodiments described above, the behavioural characteristic of the test feature <NUM> is compared with a control value. For example, the behaviour of the test feature <NUM> is compared with the behaviour of a control feature <NUM>. In another approach, a dynamic test feature <NUM> may be used. The position of the dynamic test feature <NUM> oscillates between a location in the region of interest, i.e. within the advertisement <NUM>, and a region which is known to be not in view. If the behavioural characteristic of the test feature <NUM> varies as a result of this oscillation, then it can be assumed that the advertisement <NUM> is in view, whereas if no, or relatively little, variation occurs, then it can be assumed that the advertisement <NUM> is not in view.

This approach is illustrated in <FIG>, which shows the behavioural characteristic (in this case the frame progression rate) of a dynamic test feature <NUM> when the advertisement <NUM> is in view and when it is not in view. It can be clearly seen from <FIG> that when the advertisement <NUM> is in view, the value of the behavioural characteristic for the dynamic test feature <NUM> varies significantly. This is due to the oscillation of the position of the dynamic test feature <NUM>. In contrast, when the advertisement <NUM> is not in view, the oscillation of the test feature <NUM> has little or no effect on the behavioural characteristic.

In the example shown in <FIG>, the initial value of the behavioural characteristic is relatively high, despite the fact that the advertisement <NUM> is not in view. This illustrates a circumstance in which browser behaviour is such that all elements are initially treated as in view, and the distinction in browser behaviour for different elements only occurs when an element undergoes a transition to take it out of view. Using a dynamic test feature <NUM> enforces such a transition due to the oscillation of the position of the test feature <NUM>. This can ensure that the test feature <NUM> is not incorrectly considered to be in view.

<FIG> shows the frame progression rate of both a static test feature <NUM> and a dynamic test feature <NUM> in these browser conditions. As can be seen from <FIG>, the static test feature <NUM> will only be identified as not in view after a transition has occurred. For this reason, during an initial period when the static feature <NUM> is not in view, its behavioural characteristic fails to provide an adequate indication of this state.

In some preferred embodiments, a combination of at least one dynamic test feature <NUM> and at least one static test feature <NUM> may be used. The dynamic test feature <NUM> may be used to ensure that an initial state of being not in view is correctly recognised, as explained above, while the static test feature <NUM> may be used after at least one transition has occurred. The static test feature <NUM> may offer a more finely grained and less volatile classification than the dynamic test feature <NUM>. Preferably, the combination of dynamic and static test features is targeted towards the particular behaviour of the browser used to render the host web page <NUM>.

Other variations and modifications will be apparent to the skilled person. Such variations and modifications may involve equivalent and other features which are already known and which may be used instead of, or in addition to, features described herein. Features that are described in the context of separate embodiments may be provided in combination in a single embodiment. Conversely, features which are described in the context of a single embodiment may also be provided separately or in any suitable sub-combination.

Claim 1:
A computer implemented method for determining whether a region within a web page is in view, the region within the web page being in view when the region is viewable by a user, comprising:
providing a first test feature (<NUM>) in the region, wherein the first test feature (<NUM>) comprises one of: an element, a document, a plugin or an applet;
rendering the web page by a client device (<NUM>);
varying the position of the first test feature (<NUM>) between a position within the region and a region in which the first test feature (<NUM>) is known to be not viewable by the user;
monitoring, at the client device (<NUM>), a behavioural characteristic relating to the first test feature (<NUM>), wherein the behavioural characteristic is one of: a frame progression rate of the first test feature (<NUM>), a timer clock rate and a rate at which local connections can be made; and
determining, by the client device (<NUM>), from the monitored behavioural characteristic whether the region is in view or not in view,
wherein the behavioural characteristic varies according to whether the first test feature (<NUM>) is in view or not in view.