none
xbap и javascript RRS feed

  • Вопрос

  • Здравствуйте!

    Имею внедренный в следующую страничку через iframe xbap:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="webjost.Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
      <script language="javascript" type="text/javascript" src="script.js">
      function ShowData(data) {
        alert(data);
      }
      </script>
    </head>
    <body>
      <form id="form1" runat="server">
      <div>
          <iframe src="host.xbap" width="1000" height="500" />
      </div>
      </form>
    </body>
    </html>


    Пытаюсь запустить функцию ShowData из xbap:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      dynamic host = BrowserInteropHelper.HostScript;
      host.ShowData("Hello World!");
    }


    Получаю эксепшн "System.MissingMethodException: Method '[object Window].ShowData' not found."
    При этом, например, alert вызывается без проблем.
    .NET 4 SP1, xbap подписан как Full Trusted. Что я делаю не так? 
    xbap использую так как требуется предоставлять пользователям доступ к легаси формам на Windows Forms а с ActiveX заморачиваться не хочется.

    18 марта 2011 г. 13:19

Ответы

  • Как заставить работать пример от Lester (New WPF Features: Script Interop in Xbap):

    - свойства проекта, вкладка Debug: исправить пути для "Start browser with URL" и "Command-line arguments"; причем у Лестера они указывают на xbap файл, а надо сделать чтобы указывали на htm файл (HtmlHost.htm) в том же каталоге (т.е. ....\scriptInteropXbap\bin\Debug\HtmlHost.htm)

    - в файле HtmlHost.htm первую строчку заменить на "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"

    - еще у него просроченный сертификат манифеста (свойства проекта вкладка Signing), я сделал новый, но не факт что это тоже влияет

    и у меня заработало на IE9!

     

    • Помечено в качестве ответа Abolmasov Dmitry 14 июня 2011 г. 12:57
    13 июня 2011 г. 11:14

Все ответы

  • Здравстуйте, попробуйте скачать и посмотреть готовый пример использования вызова javascript из xbap - New WPF Features: Script Interop in Xbap. Посмотрите будет ли он работать.


    Для связи [mail]
    21 марта 2011 г. 13:03
  • Проверили на двух машинах - с IE8 и IE9. На IE8 выдает тот же эксепшн, на IE9 - роняет браузер.

    "Все страннее и страннее!" (с)

    Нашел в мсдне упоминание о ключе реестра блокирующем данную функциональность, но в реестре на своей машине такого ключа опять же не нашел.

    22 марта 2011 г. 12:28
  • Попробуйте сами создать данный ключ реестра и разрешить выполнение. Для x64 систем стоит также создать ключ в 32х битной ветке - HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node


    Для связи [mail]
    22 марта 2011 г. 15:17
  • Спасибо, но не спасло. Симптомы остались теми же.
    23 марта 2011 г. 10:34
  • Здравствуйте, у вас чего-нибудь получилось?


    Для связи [mail]
    28 марта 2011 г. 13:43
  • Прошу прощения, не заходил сюда неделю.

    Нет, так ничего и не получилось.

    8 апреля 2011 г. 9:39
  • Как заставить работать пример от Lester (New WPF Features: Script Interop in Xbap):

    - свойства проекта, вкладка Debug: исправить пути для "Start browser with URL" и "Command-line arguments"; причем у Лестера они указывают на xbap файл, а надо сделать чтобы указывали на htm файл (HtmlHost.htm) в том же каталоге (т.е. ....\scriptInteropXbap\bin\Debug\HtmlHost.htm)

    - в файле HtmlHost.htm первую строчку заменить на "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"

    - еще у него просроченный сертификат манифеста (свойства проекта вкладка Signing), я сделал новый, но не факт что это тоже влияет

    и у меня заработало на IE9!

     

    • Помечено в качестве ответа Abolmasov Dmitry 14 июня 2011 г. 12:57
    13 июня 2011 г. 11:14
  • Спасибо, внезапно помогло ;)
    23 июня 2011 г. 10:29