webservice.htc, moz-поведения и Firefox 3 - PullRequest
1 голос
/ 31 октября 2008

Хотя мы пытаемся заставить наше приложение работать в Firefox (я большой сторонник поддержки X-Browser, но наш ведущий разработчик сопротивляется мне, говоря, что IE достаточно хорош). Поэтому я делаю небольшой побочный проект, чтобы посмотреть, сколько нужно конвертировать.

Я сразу же столкнулся с проблемой.

Страница main.aspx привязывается к веб-сервису, используя только метод IE для добавления поведения через htc-файл, который автоматически генерируется верой VS I.

Firefox не поддерживает это, но есть файл привязок xml, который можно использовать для включения поддержки htc (см. Здесь: http://dean.edwards.name/moz-behaviors/overview/). Примеры работают в FF3, но когда я использую свой webservice.htc, как обычно, например:

//Main.aspx
/*SNIP*/
<style type="text/css" media="all">
    #webservice
    {
        behavior:url(webservice.htc);
        -moz-binding:url(bindings.xml#webservice.htc);
    }
</style>
</head>
<body>
<div id="webservice"></div> <!-- we use this div to load the webservice stuff -->
/*SNIP*/

//Main.js
webservice.useService(url + asmpath + "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper");

Я получаю, веб-сервис не определен (прекрасно работает в IE), я, очевидно, пытался

var webservice = document.getElementById("webservice") 

и

$("#webservice").useService(url + asmpath + "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper");

также, который просто дает мне «useService не определен» в Firebug. Что заставляет меня поверить, что привязка не работает. Однако я вижу, что webservice.htc загружается Firefox в окне консоли Firebug.

У кого-нибудь есть опыт?

Должен ли я переписать, как называется веб-сервис?

Ура, Rob

Ответы [ 2 ]

2 голосов
/ 31 октября 2008

Я не думаю, что вы находитесь на правильном пути для достижения реальной кросс-браузерной совместимости. Добавление поддержки специфичных для IE функций для Firefox, безусловно, , а не . А как насчет Opera, Safari, Chrome ...? Если приложение, над которым вы работаете, используется исключительно в интрасети, то поддержки Firefox может быть достаточно ...

ИМХО, код должен быть реорганизован, но другим способом. Если вы работаете с ASP.NET 2.0 (в данном случае вам понадобится ASP.NET Ajax) или новее, вы можете создать прокси между Ajax и веб-службами SOAP. В этом случае вам нужно будет переписать все ваши поведения в виде кода JavaScript, который не может быть маленьким подвигом.

С другой стороны: AFAIK VS.NET не генерирует поведения.

Извините, если это не слишком полезно: (

1 голос
/ 03 ноября 2008

В вашем фрагменте jQuery есть ошибка: поскольку useService - это метод, определенный на самом узле, а не на объекте jQuery, вам придется выполнить:

$("#webservice")[0].useService(url + asmpath +
  "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper");
...