[whatwg] SearchBox API

Hi,

Are you covering such a use case: user enters a website, goes to the
search box (of the browser, not the page), and it is able to search
based on suggestions given by the page?

I think this would be great and would be a good way to normalize the way
people search inside a given page/app.

-- 
Diogo


On Wed, 2010-10-13 at 15:59 -0700, Tony Gentilcore wrote:
> Hi All,
> 
> We're adding instant search integration [1] to Google Chrome, allowing
> the search provider to communicate suggestions to the user agent.
> 
> If there is interest, we'd like to make sure that we do this in such a
> way that any search provider or user agent can implement it.
> 
> While the search boxes in most user agents support suggestions via an
> HTTP API, instant requires a DOM API. We propose exposing a
> window.navigator.searchBox object. There is some precedence for this
> with window.navigator.registerProtocolHandler()/registerContentHandler()
> [2].
> 
> Is this something that others are interested in? If so, any feedback
> on our working API [3]?
> 
> -Tony
> 
> [1] http://googlesystem.blogspot.com/2010/09/instant-search-in-google-chrome.html
> [2] http://dev.w3.org/html5/spec/Overview.html#navigator
> [3]
> 
> interface SearchBox {
>  // Search query and cursor position.
>  readonly attribute DOMString value;
>  readonly attribute unsigned long selectionStart;
>  readonly attribute unsigned long selectionEnd;
> 
>  // Dimensions of the portion of the search box (e.g. a dropdown)
>  // that overlaps the window.
>  readonly attribute unsigned long x;
>  readonly attribute unsigned long y;
>  readonly attribute unsigned long width;
>  readonly attribute unsigned long height;
> 
>  // Set ordered suggestions. Valid for current this.value.
>  void setSuggestions(in DOMStringArray suggestions);
> 
>  // Notification that the user has changed the input value.
>           attribute Function onchange;
> 
>  // Notification that the user has committed input (e.g. pressed enter).
>           attribute Function onsubmit;
> 
>  // Notification that the user has selected a suggestion (e.g. down
> arrow to suggestion).
>           attribute Function onselect;
> 
>  // Notification that the user has cancelled input (e.g. closed dropdown).
>           attribute Function oncancel;
> 
>  // Notification that the dimensions of the overlapping region have changed.
>           attribute Function onresize;
> }
> 
> [Supplemental]
> interface NavigatorAbilities {
>  // Raises permission denied if page isn't default search provider.
>  readonly attribute SearchBox searchBox;
> }
> 
> // Example usage.
> var searchBox = window.navigator.searchBox;
> searchBox.onchange = function() {
>   if (this.selectionStart == this.selectionEnd &&
>       this.selectionStart == this.value.length)
>     alert('Cursor is at end of input');
> 
>   alert('Setting suggestions for: ' + this.value);
>   this.setSuggestions(["one", "two"]);
> }
> searchBox.onsubmit = function() {
>   alert('User searched for: ' + this.value);
> }
> searchBox.onselect = function() {
>   alert('User selected suggestion: ' + this.value);
> }
> searchBox.oncancel = function() {
>   alert('Query when user cancelled: ' + this.value);
> }
> searchBox.onresize = function() {
>   alert('Resized to: ' +
>         [this.x,
>          this.y,
>          this.width,
>          this.height].join(','));
> }

Received on Thursday, 14 October 2010 03:42:14 UTC