1

アプリを Firefox で動作させようとしている間 (私は X-Browser サポートの大きな支持者ですが、主任開発者は IE で十分だと言って抵抗しています)。そこで、変換にどれだけの労力がかかるかを確認するために、ちょっとしたサイド プロジェクトを行っています。

すぐに問題が発生しました。

main.aspx ページは、VS I beleive によって自動生成される htc ファイルを介して動作を追加する IE のみの方法を使用して Web サービスにバインドします。

Firefox はこれをサポートしていませんが、htc サポートを有効にするために使用できる xml バインディング ファイルがあります (こちらを参照してください: 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 is not defined (IE では正常に動作します) を取得しました。

var webservice = document.getElementById("webservice") 

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

同様に、Firebugで「useServiceが定義されていません」と表示されます。これにより、バインディングが機能していないと信じるようになります。ただし、Firebug コンソール ウィンドウで webservice.htc が Firefox によって読み込まれていることがわかります。

誰でもこれを経験しましたか?

Web サービスの呼び出し方法を書き直す必要がありますか?

乾杯、ロブ

4

2 に答える 2

2

真のクロスブラウザー互換性を達成するための正しい道を進んでいるとは思いません。Firefox に IE 固有の機能のサポートを追加することは、間違いなく適切な方法ではありません。Opera、Safari、Chrome はどうですか? 作業中のアプリがイントラネットのみで使用されている場合は、Firefox のサポートで十分かもしれませんが...

私見、コードはリファクタリングする必要がありますが、別の方法で。ASP.NET 2.0 (この場合は ASP.NET Ajax が必要) 以降を使用している場合は、Ajax と SOAP Web サービスの間にプロキシを作成できます。その場合、すべての動作を JavaScript コードとして書き直す必要がありますが、これは簡単なことではないかもしれません。

ちなみに、AFAIK VS.NET は動作を生成しません。

これがあまり役に立たない場合は申し訳ありません:(

于 2008-10-31T17:28:01.030 に答える
1

jQuery スニペットにエラーがあります。これuseServiceは、jQuery オブジェクトではなく、ノード自体で定義されたメソッドであるため、次のようにする必要があります。

$("#webservice")[0].useService(url + asmpath +
  "/WebServiceWrapper.asmx?WSDL","WebServiceWrapper");
于 2008-11-03T19:18:34.130 に答える