2014-01-14 53 views

回答

1

短版本:不,您不能從其他線程訪問XPCOM。但這並不意味着你不能使用鉻工作人員。

長版本:Firefox用於允許從其他線程訪問XPCOM,例如,通過ChromeWorker。這導致了各種各樣的問題,如奇怪的崩潰或只是普通的不一致的行爲。最終,Mozilla決定支持多線程XPCOM訪問過於複雜且容易出錯,同時記錄了它的侷限性並阻止了人們的自我攻擊。

使用當前的Firefox版本,從ChromeWorker訪問XPCOM將不再可能。然而,ChromeWorker本身並不被棄用,儘管MDN評論可能會被輕易誤解爲一般棄用聲明。這個想法是,您將使用ChromeWorkerjs-ctypes結合使用,這將允許您在另一個線程上使用本地庫(由操作系統提供的庫,包括在Firefox中的庫,如NSS和隨擴展一起分發的庫)。

根據你想達到什麼,這可能適合你。例如,如果您需要XPCOM進行文件訪問,那麼您甚至不需要直接使用js-ctypes - OS.File API將爲您做到這一點。但是,XPCOM訪問僅限於主線程。

+0

謝謝你的回答。該應用程序通過使用string.charCodeAt()獲取每個字符來獲取css文件並解析它們。這可能是昂貴的。想要從主線程中獲取它,不確定在這種情況下OS.file是否可以提供幫助。謝謝。 – Mircea

+0

@Mircea:如果CSS文件在磁盤上 - 是的,當然。如果CSS文件位於Web上,那麼您仍然必須在主線程上獲取它(例如,通過異步XMLHttpRequest),然後將數據傳遞給工作人員。 –

+0

假設我已經有一個Javascript對象/字符串中的CSS內容,我可以使用OS.File來傳遞它的內容,並解析它與我的js解析器關閉主線程嗎?對不起,我對此有些困惑。 – Mircea

相關問題