W3C home > Mailing lists > Public > whatwg@whatwg.org > October 2010

[whatwg] SearchBox API

From: Tony Gentilcore <tonyg@chromium.org>
Date: Wed, 13 Oct 2010 15:59:33 -0700
Message-ID: <AANLkTin2_=og_YXw6YyvLYzjRaCxv22zv3F7YqcE-XQe@mail.gmail.com>
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 Wednesday, 13 October 2010 15:59:33 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:09:01 UTC