I'm creating a Silverlight control using Silverlight.js like so:
var properties = {
width: '640px',
height: '480px',
background: 'black',
version: '2.0.0.0'
};
var events = {
onError: function() { alert('eek!'); },
onLoad: function(sender, args) { sender.content.Page.foo(); }
};
Silverlight.createObject(
'/beta/ClientBin/DeepZoomProject.xap', // source
container, // parent element
'slPlugin', // id for generated object element
properties,
events,
'',
'context' // context helper for onLoad handler.
);
Inside the Silverlight control I've done the right stuff to make it scriptable:
[ScriptableType]
public partial class Page : UserControl {
public Page() {
InitializeComponent();
HtmlPage.RegisterScriptableObject("Page", this);
}
[ScriptableMember]
public void foo() {
// doing something here
}
}
... and in fact it works just fine in IE8, Firefox, Safari and Chrome in Windows, as well as Safari and Chrome on the Mac. It does not, however, work in Firefox (3.6) on the Mac. In Firefox, sender.content has no Page (or page, for that matter). It does have a root, but I don't know where to go from there.
Any thoughts on what I can try next?