如何从 Javascript 访问生成的 Javascript (ScriptObject)?
我有一个 Silverlight 应用程序,它在 Silverlight 站点上生成大量 Google 地图对象。例如,地图是这样创建的:
var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions);
var center = (ScriptObject)_map.Invoke("getCenter");
一切正常。但现在我需要直接从 Javascript 访问地图对象。我认为可以通过将地图属性公开为 ScriptableMember 并从 Javascript 使用它来完成。但这“有点奇怪,因为地图对象已经存在于浏览器中。但是我如何访问它?
更新
只是为了更清楚我在说什么
假设我已经创建了我的地图,如上所示。现在我已经加载了一个具有此功能的 Javasript 文件:
function ReadMapCenter()
{
//Need the map object in Javascript
map.getCenter();
}
如何从 Javascript 访问现有的地图对象?
I have a Silverlight application that generates a lot of Google Maps objects on the Silverlight site. For example a Map is created like this:
var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions);
var center = (ScriptObject)_map.Invoke("getCenter");
Everything works fine. But now I need to access the map object from Javascript directly. I think it could be done by exposing a map property as ScriptableMember and use it from Javascript. But that"s a bit odd because the map object lives already in the browser. But how do I access it?
Update
Just to make clearer what I'm talking about
Let's say I have created my map as shown above. Now I have a loaded Javasript file with this function:
function ReadMapCenter()
{
//Need the map object in Javascript
map.getCenter();
}
How can I access the existing map Object from Javascript?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您只是将其公开为 ScriptObject 类型,我认为桥将简单地解压脚本对象,而不是为其创建另一层包装。
替代
不要
在全局级别的 javascript 中使用
CreateInstance
:-现在您的 javascript 有一个可以使用的
map
全局。在 silverlight 中使用:-
If you just expose it as type
ScriptObject
I think the bridge will simply unpack the scripted object rather than create yet another layer of wrapping for it.Alternative
Don't use
CreateInstance
In your javascript at the global leve use:-
now your javascript has a
map
global it can use.In silverlight use:-