Вопрос

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

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

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

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");

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

var webservice = document.getElementById("webservice") 

и

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

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

У кого-нибудь есть какой-нибудь опыт в этом?

Придется ли мне переписывать, как вызывается веб-сервис?

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

$("#webservice")[0].useService(url + asmpath +
  "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top