OSX жүйесінде Safari 5.1 плагин модулін қалай кері қайтаруға болады?

Gecko функциялары NPN_PluginThreadAsyncCall/pluginthreadasynccall Safari 5.1 жүйесінде жұмыс істемейді (Firefox жұмыс істейді) - менің функциямыз шақырылмайды. Мен басқа функцияда ұзақ уақыттағы тапсырманы орындағаннан кейін JavaScript функциясына қоңырау шалуды жасауға тырысамын. Бұл жұмысты қалай жасауға болады?

0

1 жауаптар

Ия, Safari 5.1-де бізде бірдей проблема болған: FireBreath (сіз таныс емеспін онымен); NPN_PluginThreadAsyncCall енді жұмыс істемейді. Сіз қандай платформаның екендігін көрсетпегендіктен, Mac және Windows-де қолданатынымызды көрсетемін.

Терезелерде біз HWND хабары жасаймыз және LPARAM ретінде оқиға деректерінде вайс * өтетін HWND-ке хабар жібереміз; void * pluginthreadasynccall әдетте қабылдайтын парамдарды ұстайтын деректер құрылымына көрсеткішке қайта айналдырылады, қоңырау жасалады және деректер құрылымы босатылады. Біз пайдаланатын хабар терезесінің сыныбы , және мұнда қоңырау жасалатын жерде . (IE-дағы кросс-шлейф қоңыраулары үшін бірдей механизмді қолданамыз)

Mac-та біз негізінен мақсатты-c performSelectorOnMainThread-ды қолданамыз; біз оны c ++-дан пайдалануды жеңілдету үшін сыныпқа орап алдық. Біз пайдаланатын жоспарлаушы сынып мына жерде , және мұнда қоңырау жасалатын жерде . Сіздер шынымен мұқият болуыңыз керек, себебі олармен бірге жарыстардың көптеген жағдайлары бар, ал кейде сіз қайталанатын кодпен аяқталады. FireBreath технологиясы ондаған жұмыс сағаты бар. бұл қате қиын мәселе.

Бұл көмектеседі деп үміттенемін!

1
қосылды
Сіздің көмегіңіз үшін тағы да рахмет. Мен performSelectorOnMainThread арқылы аяқтадым, ол меніңше жақсы жұмыс істейді :)
қосылды автор Peter Tseng, көзі