Webservice.htc, moz-поведения и Firefox 3

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

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

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

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.

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

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

Ваше здоровье, Роб

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
4 260
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я не думаю, что вы на правильном пути к достижению реальной кросс-браузерной совместимости. Добавление поддержки специфичных для 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");

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