如何从Javascript访问生成的Javascript(ScriptObject)?

时间:2011-05-26 09:37:09

标签: javascript silverlight

我有一个Silverlight应用程序,可以在Silverlight网站上生成大量Google Maps对象。例如,Map就像这样创建:

var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions);
var center = (ScriptObject)_map.Invoke("getCenter");

一切正常。但是现在我需要直接从Javascript访问地图对象。我认为可以通过将map属性公开为ScriptableMember并从Javascript中使用它来完成。但这有点奇怪,因为地图对象已存在于浏览器中。但我如何访问它?

更新

只是为了让我更清楚我所说的

假设我已经创建了我的地图,如上所示。现在我有一个带有这个函数的加载Javasript文件:

function ReadMapCenter()
{
  //Need the map object in Javascript
  map.getCenter();
}

如何从Javascript访问现有的地图对象?

1 个答案:

答案 0 :(得分:0)

如果你只是将它公开为类型ScriptObject,我认为桥只会解压缩脚本对象,而不是为它创建另一层包装。

<强>替代

请勿使用CreateInstance

在全球级别的javascript中使用: -

var map;
function createMap(container, mapOptions)
{
     if (!map)
     {
        map = new google.maps.Map(container, mapOptions);
     }
     return map;
}

现在,您的javascript可以使用map全局。

在silverlight中使用: -

 var map = HtmlPage.Window.Invoke("createMap", container, mapOptions);