我正在創建一個帶有內置WebBrowser控件的.Net庫。圖書館通常應該在其他應用程序中處理谷歌地圖。基本上所有重要的谷歌地圖API事件都發送到我的C#庫傳遞到應用程序使用它。正在下載文件塊javascript事件?
一切都很好,直到使用我的lib的應用程序想要在點擊時更改標記圖標並雙擊執行不同的操作。在這種情況下,應用程序將在C#中的水平,這反過來又調用一個JavaScript函數來改變地圖上的圖標標記圖標:
function SetMarkerIcon(id, imageUri) {
markers[id].setIcon(imageUri);
}
我調試的問題是JavaScript的凍結,直到圖像文件被下載和結論對第二次點擊無響應,這應該會觸發'dblclick'事件。所以我的第一個問題是這是否是正確的思維方式。
基於這個假設我試着使用的setTimeout有點延遲一個文件的下載:
function SetMarkerIcon(id, imageUri) {
setTimeout(function() { markers[id].setIcon(imageUri); }, 200);
}
但顯然這種解決方案很「髒」(雖然在測試環境中工作,其實它的工作對甚至在使用本地.js文件時延遲0ms,可能是因爲setTimeout使用了一種單獨的線程,但與服務器上的腳本無關),因此第二個問題:您是否有任何可用的想法來正確解決此錯誤?
如果問題有點模糊,請提前致謝。
感謝您的這個想法!實現這將是有問題的(因爲標記圖標是在一些非託管代碼中動態生成的),但可能是可能的。我將在稍後保留此解決方案。 – slawekwin