1

雖然試圖讓我們的應用程序在Firefox中的工作(我的X-瀏覽器支持大的支持者,但我們的領先優勢開發正在抵制我說IE是不夠好)。所以我正在做一個小項目,看看它要轉換多少工作。webservice.htc,MOZ-行爲和Firefox 3

我馬上就遇到了問題。

的main.aspx頁結合使用IE僅通過HTC文件,它是由VS自動生成我beleive添加行爲的方法的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"); 

我得到web服務沒有被定義(在IE中正常工作),我明明試過

var webservice = document.getElementById("webservice") 

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

以及它只是給了我螢火蟲「useService沒有定義」。這導致我相信綁定不起作用。但是我可以看到webservice.htc正在Firebug控制檯窗口中被Firefox加載。

任何人有這樣的經驗嗎?

難道我將不得不重新編寫web服務怎麼叫?

乾杯, 羅布

回答

2

我不認爲你是對實現真正的跨瀏覽器兼容的正確途徑。添加對IE瀏覽器特定功能的支持絕對是而不是的路要走。那麼Opera,Safari,Chrome ......呢?如果你正在處理的應用程序是嚴格使用Intranet上的支持,然後Firefox可能足以但是......

恕我直言,代碼應進行重構,而是以其他的方式。如果您正在使用ASP.NET 2.0(在這種情況下您需要ASP.NET Ajax)或更新的版本,則可以在Ajax和SOAP Web服務之間創建代理。在這種情況下,您需要將您的所有行爲重寫爲JavaScript代碼,這可能不是一件小事。

在一個側面說明:據我所知VS.NET不會產生行爲。

很抱歉,如果這不是太大的幫助:(

1

你jQuery的片段中的錯誤:因爲useService是節點本身定義的方法,而不是jQuery對象,你必須做到:

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