2009-03-06 4 views
2

У меня есть приложение WPF, содержащее элемент управления Frame. Элемент управления кадром отображает содержимое html. На странице html есть функция JavaScript, которую я хочу вызвать после того, как страница html загружается в Frame и из кода WPF? Есть ли способ, который я могу вызвать JavaScript-метод html-страницы, загруженной в элемент управления WPF-фреймом, и из кода WPF?WPF Frame control

ответ

1

Нет доступа к 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> 
3

Вы не можете взаимодействовать с HTML внутри фрейма. Чтобы взаимодействовать с HTML, вы можете использовать элемент управления WebBrowser WPF для .NET 3.5 SP1.

Вы можете увидеть в контроле WebBrowser в действии в этом видео:

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

0

Использование <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 только один раз и то только после загрузки страницы HTML.

Если вы хотите позвонить в JS больше, чем когда-то, возможно, вы можете установить свойство источника управления кадров из кода, как и когда вам нужно ... как в .. myWpfFrame.Source = myWpfFrame.Source;