Sat, March 8, 2008, 11:12 AM under 
Silverlight
  
    Given that Silverlight applications sit in the browser via a plug in, it would be silly if you couldn't interact from managed SL code with other browser elements, such as html elements and script so that you could, for example, reuse existing assets. I have heard the browser-agnostic integration featured described as 
HTML Bridge and it is implemented in the 
System.Windows.Browser.dll assembly in a 
same named namespace. You can see the types from that namespace on the following image (click on it for the 
expanded version):

The important inheritance hierarchy to be aware of is that 
HtmlDocument and 
HtmlElement inherit from 
HtmlObject (that allows handling script events via 
AttachEvent) which inherits from 
ScriptObject (that allows you to execute scripts via its 
Invoke and 
InvokeSelf methods). 
HtmlPage is a great entry point because you can navigate across its 
Window property to an 
HtmlWindow (that allows e.g. to 
Navigate URLs) and across its 
Document property to an 
HtmlDocument (that offers e.g. access to 
Cookies and 
QueryString). Also note the 2 Attribute classes: 
ScriptableType and 
ScriptableMember. Those are used for exposing Silverlight managed classes to script in the browser combined with 
HtmlPage.
RegisterScriptableObject and 
RegisterCreateableType methods. Open the expanded class diagram in a separate window and identify the aforementioned methods. Notice there how 
HtmlDocument allows you to create new elements and retrieve existing ones (
CreateElement and 
GetElementById). Once you have references to those 
HtmlElements you can do things like 
SetAttribute, 
SetStyleAttribute and 
AppendChild to name a few. Script events are handled in your managed 
ScriptEventHandler method that accepts an 
HtmlEventArgs which you can find on the class diagram along with its relationships (e.g. 
MouseButtons). You should also checkout the 
HttpUtility class and its self-explanatory methods such as 
UrlEncode.
Phew! Take a moment to study the two class diagrams using the previous paragraph as a guide and also note that all links above are direct links to the API documentation (i.e. this blog post becomes my bookmark into MSDN ;)). You can also follow a quickstart (
DOM access), two walkthroughs (calling 
managed from script and 
script from managed), and for those that want even more, 
follow this 2-hour lab (ZIP).
To see some of the browser integration in action, I have here the 
ugliest and most basic SL app that simply proves some of the concepts.