【问题标题】:Silverlight 3 onload event binding multiple instancesSilverlight 3 onload 事件绑定多个实例
【发布时间】:2009-12-01 17:59:25
【问题描述】:

我在页面中嵌入了两个 Silverlight 实例,如下所示(内容仅简化为相关细节):-

<object id="SL1" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
   <param name="source" value="/clientBin/Common.xap"></param>
   <param name="minRuntimeVersion" value="3.0.40624.0"></param>
   <param name="windowless" value="True"></param>
   <param name="onload" value="silverlight_onload"></param>
   <param name="initParams" value="some configuration here"></param>
 </object>

<object id="SL2" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
   <param name="source" value="/clientBin/Common.xap"></param>
   <param name="minRuntimeVersion" value="3.0.40624.0"></param>
   <param name="windowless" value="True"></param>
   <param name="onload" value="silverlight_onload"></param>
   <param name="initParams" value="a different configuration here"></param>
 </object>

正如您所见,objects 都指向同一个 xap,但 initParams 中的内容不同。

但请注意,onload 参数指向 same 函数名称。这个问题的这个特定部分是不变的

我在全局级别的 javascript 中的其他地方:-

function silverlight_onload(sender, eventargs)
{
  //Magic pixie dust here
}

目标是获取sender 并确定哪些对象元素是事件的来源。直截了当(但出于这个问题不可接受的原因)的答案是使用两个不同的功能。我正在寻找不需要将新函数添加到每个 SL 对象的全局命名空间的东西。

奖金,感谢任何能告诉我为什么 SL 无法从主机浏览器获得更多帮助并更像其他元素事件(如 onlick)处理 onload 参数的人。例如向浏览器询问eval("function() {" + onload + "}" 并将返回函数附加到onload 事件中。

【问题讨论】:

    标签: javascript silverlight silverlight-3.0 onload


    【解决方案1】:

    您的目标是在 javascript 中获取 initparams,然后对其进行处理吗?如果是这样,您可以这样做:

    sender.getHost().InitParams
    

    getHost() 返回实际的插件对象see msdn page for more details。除非您将其设置为 initparam,否则我不知道获取对象 ID 的方法。

    【讨论】:

    • getHost() 是我所追求的,它返回托管当前运行事件的插件的特定对象元素。因此,我可以使用它来将程序流引导到元素的正确代码。
    【解决方案2】:

    您的第一个呼叫点应该是silverlight.js reference

    基本上,您的“silverlight_onload”javascript 函数将作为发送方获取实际的 html 对象元素,因此请检查它的 id 是什么,您将获得我认为您想要的。

    SL 无法从主机获得更多帮助的原因是 html 对象没有 onload 事件。 Object Element reference.


    好吧,因为文档似乎没有反映现实,所以您只能从 silverlight 控件本身调用 javascript 方法。只需传入一个 id 作为 init 参数之一。

    【讨论】:

    • 如果 onload 事件中的发送者是对象元素,那就太好了,不幸的是,事实并非如此。它的类型为“UserControl”,名称为“Layout”根。但是我不知道如何从它导航到包含的对象元素。
    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 2012-03-14
    • 2012-09-24
    • 2011-01-19
    • 2016-08-30
    • 1970-01-01
    • 2016-08-30
    • 2011-01-25
    相关资源
    最近更新 更多