1

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

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

Страница 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.

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

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

Приветствия, Роб

ответ

2

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

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

На стороне примечания: AFAIK VS.NET не генерирует поведения.

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

1

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

$("#webservice")[0].useService(url + asmpath + 
    "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper"); 
Смежные вопросы