Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Javascript访问生成的Javascript(ScriptObject)?_Javascript_Silverlight - Fatal编程技术网

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

如何从Javascript访问生成的Javascript(ScriptObject)?,javascript,silverlight,Javascript,Silverlight,我有一个Silverlight应用程序,可以在Silverlight站点上生成许多Google Maps对象。例如,创建的地图如下所示: var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions); var center = (ScriptObject)_map.Invoke("getCenter"); 一切正常。但是现在我需要直接从Javascript访问map对象。我认为可以通过将映

我有一个Silverlight应用程序,可以在Silverlight站点上生成许多Google Maps对象。例如,创建的地图如下所示:

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访问现有的map对象?

如果您只是将其作为ScriptObject类型公开,我认为桥接器将简单地解压脚本对象,而不是为其创建另一层包装

另类

不要使用CreateInstance

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

var map;
function createMap(container, mapOptions)
{
     if (!map)
     {
        map = new google.maps.Map(container, mapOptions);
     }
     return map;
}
现在您的javascript有了一个全局映射,可以使用它

在silverlight中使用:-

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

如果您只是将其作为ScriptObject类型公开,我认为桥接器将只需解压缩脚本对象,而不是为其创建另一层包装

另类

不要使用CreateInstance

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

var map;
function createMap(container, mapOptions)
{
     if (!map)
     {
        map = new google.maps.Map(container, mapOptions);
     }
     return map;
}
现在您的javascript有了一个全局映射,可以使用它

在silverlight中使用:-

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

在我最初的帖子中添加了更多的解释。不知道我说的是不是很清楚,没错。我没有想到那件事。我是在SL世界中长大的,我认为一定有办法升级ScriptObject。像这样,我不得不改变一些事情,但这可能是最简单的方法。谢谢你的指点。在我最初的帖子中添加了更多的解释。不知道我说的是不是很清楚,没错。我没有想到那件事。我是在SL世界中长大的,我认为一定有办法升级ScriptObject。像这样,我不得不改变一些事情,但这可能是最简单的方法。谢谢你的指点。