我們已經建立了一塊氟化一體化裝置,這是一個非常奇怪的問題。在一些IE版本中沒有提出氟申請
我們有一個表格上有Captcha; Captcha圖像由創新的.Net/AMF webservice填充,創造性地標題爲GetCaptchaImage.ashx
,並且可以從Flash中的文本超鏈接重新加載。
在IE瀏覽器的一些版本(特別是IE8,但它也可能是其他),不論IE version emulation和wmode,點擊文字鏈接導致HTTP調用我們的氟網關成功地進行,但調用web服務不遵循它。檢查HTTP交易與Microsoft Fiddler,我們看到:
POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)
,沒有別的,而在其他瀏覽器中我們可以看到:
POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)
GET http://www.domain.com/GetCaptchaImage.ashx
200 OK (image/gif)
,使調用的代碼似乎是繼承,沒有任何覆蓋,從org.osflash.signals.Signal.dispatch
,所以我不明白爲什麼它不會只是血腥的工作™。實際方法調用讀取:
private function getNewCaptcha(event:MouseEvent):void
{
getCaptchaAgain.dispatch();
trace("Captcha button click");
GlobalDebugger.log(this, "Captcha button click!");
}
其中唯一的其他在整個代碼庫提到的getCaptchaAgain
是:
public var getCaptchaAgain:Signal = new Signal();
和
compForm.getCaptchaAgain.add(getTheCaptchaAgain);
和getNewCaptcha
唯一的其他出現時的line:
_cantReadCaptchaButton.addEventListener(MouseEvent.CLICK, getNewCaptcha);
編輯:Juan Pablo Califano指出我沒有注意到有一個參考getTheCaptchaAgain
,我誤將它作爲getCaptchaAgain
。它被定義爲
private function getTheCaptchaAgain():void
{
captchaSignal.dispatch();
}
並且僅從onFormResponse
調用,其中它是無趣的。 captchaSignal
在
public class CompetitionFormMediator extends AbstractFactoryAccessorMediator
{
[Inject]
public var captchaSignal:CaptchaSignal;
// ...
}
CaptchaSignal
延伸org.osflash.signals.Signal
和不感興趣,但被稱爲在一個行讀取:
signalCommandMap.mapSignalClass(CaptchaSignal, CaptchaCommand);
CaptchaCommand
延伸SignalCommand
和內部flash.events.EventDispatcher
主叫
var callFunction:Function = serviceHub.call;
callFunction.apply(serviceHub, collectArgs);
其中collectArgs
結束是一個Array
o沒有提供任何線索的f論證。
編輯完
沒有人有任何想法,爲什麼在地球上是第二次通話不會做它的網絡服務器?我不明白爲什麼Flash不會發布HTTP GET
,但同樣,我想不出爲什麼瀏覽器(更不用說這個瀏覽器)會抑制它的任何原因。我不是Flash開發人員(我在這裏運行.Net團隊),但是我看不出什麼奇怪的事情,而且我和Flash團隊(包括構建代碼的開發人員)都不會想到爲什麼會有這種可能正在發生。
任何想法的人?
getTheCaptchaAgain方法是否被調用?該方法的代碼是什麼? (我對Signals沒有多少經驗,但是我明白這是一個事件分派的框架,所以實際http請求的代碼必須位於'getTheCaptchaAgain'或其他函數中)。 – 2011-04-15 15:30:18
'getCaptchaAgain'是用戶單擊以重新加載Captcha的表單上的按鈕;我相信功能本身是由Fluorine框架來處理的,但是對網關的初始HTTP調用被調用,我們不明白爲什麼特定的web服務不會隨後被調用。 – 2011-04-15 15:40:20
在我看來'getCaptchaAgain'是一個調度器,'getTheCaptchaAgain'是一個註冊到它的監聽器(根據這一行:'compForm.getCaptchaAgain.add(getTheCaptchaAgain);'。所以,流程似乎是:'_cantReadCaptchaButton 'getClicked,'getNewCaptcha'捕獲鼠標事件;'getCaptchaAgain.dispatch()'被調用,導致getCaptchaAgain通知它的監聽器,這可能是'getTheCaptchaAgain'。這就是爲什麼我提到'getTheCaptchaAgain'方法'getCaptchaAgain'對象)。再次,我對Floruine或Signals不熟悉,所以我可能是錯的。 – 2011-04-15 15:53:59