1

En essayant de faire fonctionner notre application dans Firefox (je suis un grand partisan du support de X-Browser mais notre principal développeur me résiste en disant que IE est assez bon). Donc je fais un petit projet parallèle pour voir combien de travail il faut convertir.webservice.htc, moz-behaviors et Firefox 3

J'ai déjà rencontré un problème.

La page main.aspx se lie à un service Web en utilisant la méthode IE uniquement pour l'ajout d'un comportement via un fichier htc, qui est générée automatiquement par VS I Beleive.

Firefox ne supporte pas cela, mais il y a un fichier de liaisons xml qui peut être utilisé pour activer le support htc (voir ici: http://dean.edwards.name/moz-behaviors/overview/). Les exemples travailler dans FF3 mais quand j'utiliser mon webservice.htc comme je normalement par exemple:

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

Je reçois webservice n'est pas défini (fonctionne très bien dans IE), j'ai évidemment essayé

var webservice = document.getElementById("webservice") 

et

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

également qui me donne juste "useService n'est pas défini" dans Firebug. Ce qui m'amène à croire que la reliure ne fonctionne pas. Cependant, je peux voir que webservice.htc est chargé par Firefox dans la fenêtre de la console Firebug.

Quelqu'un at-il une expérience de cela? Est-ce que je vais devoir réécrire comment le webservice est appelé?

Cheers, Rob

Répondre

2

Je ne pense pas que vous êtes sur la bonne voie pour parvenir à une véritable compatibilité entre les navigateurs. Ajout de la prise en charge des fonctionnalités spécifiques à IE pour Firefox est définitivement pas le chemin à parcourir. Qu'en est-il de Opera, Safari, Chrome ...? Si l'application sur laquelle vous travaillez est strictement utilisée sur l'intranet, la prise en charge de Firefox peut cependant suffire ...

À mon humble avis, le code doit être refactorisé, mais d'une autre manière. Si vous travaillez avec ASP.NET 2.0 (dans ce cas, vous aurez besoin d'ASP.NET Ajax) ou plus récent, vous pouvez créer un proxy entre les services Web Ajax et SOAP. Dans ce cas, vous devrez réécrire tous vos comportements sous la forme d'un code JavaScript, ce qui n'est peut-être pas une mince affaire. Sur une note de côté: AFAIK VS.NET ne génère pas de comportements.

Désolé si ce n'est pas trop utile :(

1

Votre extrait jQuery a une erreur: car useService est une méthode définie sur le nœud lui-même, et non pas l'objet jQuery, vous auriez à faire:

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