none
请教用Silverlight调用javascript的问题 RRS feed

  • 问题

  • 刚接触silverlight,对如何调用javascript不太了解,我的想法是直接在按钮事件中用HtmlPage.Window.Eval("this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.microsoft.com);");语句来设置首页,但VS老是报Eval失败的错误,请教这是什么原因,谢谢!
    还有请问是否有其他的方式来做设置首页和添加到收藏夹之类的功能,谢谢!
    2009年4月22日 9:01

答案

  • 添加到收藏夹我测试是可以的
    window.external.AddFavorite('http://www.silverlightchina.com/', '银光中国');

    但是设置为主页提示没有权限,我想这是sl安全中限制了这方面的访问功能而且设置为首页的方法在多个浏览器中不通用所以不能用设置主页,而且也涉及了很多安全问题,只有在很早起的Flash版本中才能用,现在的Flash也不可做设置首页的功能,首页设置还是在html页面中做.

    • 已标记为答案 domiChen 2009年4月24日 8:11
    2009年4月24日 6:50
    版主

全部回复

  • 最好是在页面里面写好javascript的添加收藏方法,然后用Silverlight去调用页面内的JavaScript的这个方法.

                ScriptObject jsproc = HtmlPage.Window.GetProperty("jsFuctionName") as ScriptObject;
                jsproc.InvokeSelf(null);
    2009年4月22日 15:26
    版主
  • ScriptObject对象为空,提示“InvokeSelf 失败。”这是什么原因啊?javascript的代码我单独测试过没有问题。
    2009年4月22日 16:21
  • 你页面里面没有jsFuctionName这个js的函数,所以为空,自然就失败了,而且最好这个函数在 <head></head>中载入,不要放在<html>标签内
    2009年4月23日 7:56
    版主
  • 你可以把这些函数写为一个javascript函数,例如abc(),然后在silverlight调abc()这个函数就简单多了,修改起来比较方便。呵呵

    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com

    2009年4月23日 8:05
    版主
  • 测了一下,似乎是这段javascript出了问题,换成其他的JS都过了,但不知道是什么原因,大虾们赐教啊...
    ------------------------------------------------------------------------------------------------------------------------------------------------
    Page.xaml.cs

    private void btnHomePage_Click(object sender, RoutedEventArgs e)
    {
        ScriptObject jsproc = HtmlPage.Window.GetProperty("setHomePage") as ScriptObject;
        jsproc.InvokeSelf(null); // 提示InvokeSelf失败!
    }
    ------------------------------------------------------------------------------------------------------------------------------------------------
    TestPage.aspx

    <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">
    <head id="Head1" runat="server">
        <title>Test</title>
        <script type="text/javascript">
            function setHomePage() {
                document.body.style.behavior = "url(#default#homepage)";
                document.body.setHomePage("http://www.microsoft.com");
            }
        </script>
    </head>
    <body>
      ......
    </body>
    </html>

    2009年4月24日 4:33
  • this.style.behavior='url(#default#homepage)';
    this.setHomePage("http://www.microsoft.com");
    这样试试,你 JS最好先不要用Silverlight调用,现在浏览器里面测试下,能不能过
    2009年4月24日 5:02
    版主
  • 不用Silverlight调用是没有问题的,可以正常运行...
    this.~和document.body.~调出来是同样的错误,请赐教...谢谢

    2009年4月24日 5:32
  • 添加到收藏夹我测试是可以的
    window.external.AddFavorite('http://www.silverlightchina.com/', '银光中国');

    但是设置为主页提示没有权限,我想这是sl安全中限制了这方面的访问功能而且设置为首页的方法在多个浏览器中不通用所以不能用设置主页,而且也涉及了很多安全问题,只有在很早起的Flash版本中才能用,现在的Flash也不可做设置首页的功能,首页设置还是在html页面中做.

    • 已标记为答案 domiChen 2009年4月24日 8:11
    2009年4月24日 6:50
    版主
  • 感谢你的帮助,看来只能设置在HTML中了。
    2009年4月24日 8:11