1

在尝试让我们的应用程序在 Firefox 中运行时(我是 X-Browser 支持的大力支持者,但我们的首席开发人员拒绝我说 IE 已经足够好)。所以我正在做一个小项目,看看要转换多少工作。

我马上就遇到了问题。

main.aspx 页面使用仅 IE 方法通过 htc 文件添加行为的方法绑定到 Web 服务,该方法由 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");

我得到 webservice 未定义(在 IE 中工作正常),我显然尝试过

var webservice = document.getElementById("webservice") 

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

同样,这只是在 Firebug 中给了我“未定义 useService”。这让我相信绑定不起作用。但是,我可以在 Firebug 控制台窗口中看到 Firefox 正在加载 webservice.htc。

有人有这方面的经验吗?

我是否必须重写 web 服务的调用方式?

干杯,罗伯

4

2 回答 2

2

我不认为你在实现真正的跨浏览器兼容性方面是正确的。为 Firefox 添加对 IE 特定功能的支持绝对不是要走的路。Opera、Safari、Chrome……呢?如果您正在开发的应用程序严格在 Intranet 上使用,那么支持 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 回答