У меня есть приложение WPF, содержащее элемент управления Frame. Элемент управления кадром отображает содержимое html. На странице html есть функция JavaScript, которую я хочу вызвать после того, как страница html загружается в Frame и из кода WPF? Есть ли способ, который я могу вызвать JavaScript-метод html-страницы, загруженной в элемент управления WPF-фреймом, и из кода WPF?
Вы не можете взаимодействовать с HTML внутри фрейма. Чтобы взаимодействовать с HTML, вы можете использовать WPF WebBrowser для управления .NET 3.5 SP1.
Вы можете видеть в элементе управления WebBrowser действие в этом видео:
http://channel9.msdn.com/posts/AdamKinney/WPF-35-SP1-App-Model-with-Jennifer-Lee/
Нет доступа к DOM, поэтому я не боюсь. Если вам что-то определенно необходимо, то лучше всего разместить встроенный элемент управления WinForms WebBrowser из 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>
Используйте <body onload="javascript:alert('hi its loaded. do what you want here');">
на своей HTML-странице, скажем myhtmlpage.html.
Затем используйте код управления XAML (<Frame Name="myWpfFrame" Source="http://myurl/myhtmlpage.html">
) в коде WPF.
Это решение будет работать, если вы хотите вызывать javascript только один раз и thats только после загружается страница HTML.
Если вы хотите вызывать js более одного раза, вы можете установить исходное свойство элемента управления кадра из кода как и когда вам нужно... как в. myWpfFrame.Source = myWpfFrame.Source;