WPF Frame control

谁说胖子不能爱 提交于 2019-12-24 01:53:05

问题


I have a WPF application containing a Frame control. The frame control displays the html content. The html page contains a JavaScript function which I want to call after html page is loaded on Frame and from the WPF code ? Is there a way I can call JavaScript method of html page loaded in WPF frame control and from within WPF code?


回答1:


You can't interact with the HTML inside of a frame. In order to interact with HTML, you can use WPF's WebBrowser control of .NET 3.5 SP1.

You can see in WebBrowser control in action in this video:

http://channel9.msdn.com/posts/AdamKinney/WPF-35-SP1-App-Model-with-Jennifer-Lee/




回答2:


There's no access to the DOM, so it's a no go I'm afraid. If it's something you definately need then your best bet is probably to embed the WinForms WebBrowser control from System.Windows.Forms.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:f="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
  xmlns:fi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration.dll" >
  <Grid>  
    <fi:WindowsFormsHost>
      <f:WebBrowser x:Name="BrowserControl" Url="http://www.myurl.com/"/>
    </fi:WindowsFormsHost>
  </Grid>
</Page>



回答3:


Use <body onload="javascript:alert('hi its loaded. do what you want here');"> in your HTML page, say myhtmlpage.html.

Then use a frame XAML control (<Frame Name="myWpfFrame" Source="http://myurl/myhtmlpage.html">) in your WPF code.


This solution will work assuming you want to call the javascript only once and thats only after the HTML page is loaded.

If you want to call the js more than once, you can possibly set the source property of the frame control from code as and when you need... as in .. myWpfFrame.Source = myWpfFrame.Source;



来源:https://stackoverflow.com/questions/617939/wpf-frame-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!