2012-11-14 27 views
2

我有一个Silverlight应用程序,它可以与我的摄像头进行通信以拍摄照片。在Silverlight中调用javascript

的Silverlight代码

protected void photoButton_Click(object sender, RoutedEventArgs e) 
{ 
    this.src.CaptureImageCompleted += (s, a) => 
    { 
     this.lastSnapshot = a.Result; 
     this.snapshot.Visibility = Visibility.Visible; 
     this.snapshot.Source = this.lastSnapshot; 
     HtmlPage.Window.Invoke("SalvaFoto");     
     this.src.Stop(); 
    }; 

    src.CaptureImageAsync(); 
} 

ASPX当我把我的Silverlight应用程序

  var htmlEmbedSilverlight = "<div id='silverlightControlHost'> " 
        + "<object data='data:application/x-silverlight-2,' type='application/x-silverlight-2' width='550px' height='250px'> " 
        + "<param name='source' value='../../ClientBin/FotoEmprestimoChave.xap'/> " 
        + "<param name='onError' value='onSilverlightError' /> " 
        + "<param name='background' value='white' /> " 
        + "<param name='minRuntimeVersion' value='4.0.60310.0' /> " 
        + "<param name='autoUpgrade' value='true' /> " 
        + "<param name='InitParams' value='chave_id=" + data + "' /> " 
        + "<a href='http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0' style='text-decoration:none'> " 
        + "<img src='http://go.microsoft.com/fwlink/?LinkId=161376' alt='Get Microsoft Silverlight' style='border-style:none'/> " 
        + "</a> " 
        + "</object><iframe id='_sl_historyFrame' style='visibility:hidden;height:0px;width:0px;border:0px'></iframe></div>"; 
      $("#tiraFotoSilverlight").html(htmlEmbedSilverlight); 

问题

当我尝试执行当前0123的页面HtmlPage.Windows.Invoke("javascript_method");不起作用。

我做错了什么?

我也试试下面的代码,但没有成功

protected void photoButton_Click(object sender, RoutedEventArgs e) 
{ 
    this.src.CaptureImageCompleted += (s, a) => 
    { 
     this.lastSnapshot = a.Result; 
     this.snapshot.Visibility = Visibility.Visible; 
     this.snapshot.Source = this.lastSnapshot; 

     HtmlElement Script = HtmlPage.Document.CreateElement("script"); 
     Script.SetAttribute("type", "text/javascript"); 
     Script.SetProperty("text", "$(document).ready(function() { alert('hi'); });"); 

     this.src.Stop(); 
    }; 

    src.CaptureImageAsync(); 
} 

回答

0

我新的Silverlight/JavaScript的,但如果我这样做,我需要使用Dispatcher.BeginInvoke:

Dispatcher.BeginInvoke(() => 
    { 
     HtmlPage.Window.Invoke("SalvaFoto"); 
    }); 
+0

它不工作,发生例外 –

相关问题