我有一些運行在由Java小程序啓動的線程中的長時間運行的Java代碼。代碼一旦完成,它就會爲用戶提供信息。我想以線程安全的方式將此信息傳遞給JavaScript回調。只是使用Java DOM API來修改HTML文檔不夠好,除非我的JavaScript回調以線程安全方式(即最終在執行JavaScript回調的同一瀏覽器線程中)作爲副作用被調用。我怎樣才能實現這個?有沒有圖書館已經在做它?如何從Java applet線程調用JavaScript回調?
回答
似乎沒有公開教程如何做到這一點。整個JavaScript - Java接口沒有記錄,並且受到瀏覽器限制。
看起來好像Common DOM API是你所需要的。實質上,你可以請求一個DOMService在主UI線程中回調,並且它已經準備就緒。
http://docs.oracle.com/javase/1.5.0/docs/guide/plugin/developer_guide/java_js.html
據我瞭解的東西,JSObject是 「老辦法」 和公共DOM API是較新的方式(如Java 6)。你需要做的是調用你的小程序的方法,並傳遞你想要回調的函數對象。然後你的applet從你的DOMAction中調用該函數對象。
我沒有任何代碼可以向您展示,這不是我在使用Java之前完成的。不過,我使用了一種類似的技術,使用用C++編寫的NPAPI Web插件,即JS調用我的C++對象傳遞一個函數作爲參數,然後在稍後階段讓C++對象調用JS函數。 '希望這有助於。
當然可以,但我該怎麼寫我在我的'DOMAccessor.run'?我應該嘗試獲取對'JSObject'的引用,並嘗試從那裏調用回調?或者我應該嘗試修改DOM,並希望JavaScript能夠檢測到(例如DOMAttrModified) - 但這僅在少數瀏覽器中受支持,並且在Internet Explorer中不受支持。你能給一個跨瀏覽器的代碼示例有效嗎? – pts 2010-08-30 06:17:59
我有多個applet線程調用Javascript的併發問題。一些電話被Internet Explorer 8忽略(Firefox 3.6和Safari 5工作正常)。
我試圖用DOMService.invokeAndWait打電話給Javascript - 這沒有幫助。我最終確保所有的Java-> Javascript調用都來自同一個線程,並且我的問題得到了解決(至少暫時 - 我沒有檢查過,如果Javascript線程忙於某些用戶定義的操作,發起的工作)。
序列化的呼叫,我用Executors.newSingleThreadExecutor
- 1. 從Java Applet調用Javascript函數
- 2. 如何從Java Applet調用JS函數?
- 3. 從Flex調用Java Applet
- 4. 如何在Java Applet中註冊JavaScript回調?
- 5. 從Java servlet調用線程
- 6. JNI回調線程
- 7. 將javascript回調傳遞給使用deployJava部署的java applet
- 8. 從Java腳本調用Applet函數
- 9. 從工作線程調用主線程回調函數
- 10. java applet:哪些線程調用生命週期鉤子?
- 11. 的JavaScript線程使用Ajax回調
- 12. 從其他線程回調
- 13. 從子線程回調父線程
- 14. 如何在不使用showDocument的情況下從applet調用javascript?
- 15. GWT互操作性:從GWT生成的javascript中調用java applet
- 16. 如何從JavaScript調用WebStart部署的applet函數?
- 17. 如何從unsigned Javascript中調用已簽名的Java Applet執行特權操作?
- 18. 在主線程中執行JavaScript回調
- 19. 從RegisterStartupScript調用Applet函數
- 20. 從applet調用servlet?下面
- 21. 如何從JavaScript調用Java方法
- 22. 如何從javascript調用java函數?
- 23. Delegate.BeginInvoke回調阻塞調用線程?
- 24. 在ubuntu上調用javascript函數時Java applet崩潰chrome java
- 25. 從JavaScript中調用Groovy或Java程序
- 26. 線程終止時的Java ExecutorService回調
- 27. Rhino:如何從JavaScript調用的Java方法返回一個Integer?
- 28. 如何從java中的javascript調用返回數組?
- 29. 如何從非UI線程調用Snackbar.make()?
- 30. 從Java線程調用到JNI並返回到requestPermissions
但看看這裏:https://jdk6.java.net/plugin2/liveconnect/ – flup 2014-01-10 15:39:34