2015-11-19 69 views
3

我有下面的代碼,在一個新的擴展我的工作:的addListener到chrome.commands.onCommand從ClojureScript不觸發功能

(.addListener js/chrome.alarms.onAlarm (fn [alarm] (.log js/console alarm))) 
(.addListener js/chrome.commands.onCommand (fn [command] (.log js/console command))) 
(.addListener js/chrome.browserAction.onClicked (fn [] (.log js/console "clicked!"))) 

:cljsbuild看起來是這樣的:

{:id "background" 
:source-paths ["src/folder/background"] 
:compiler {:output-dir "resources/public/js/compiled/background" 
      :output-to "resources/public/js/compiled/background/background.js" 
      :main folder.background.background 
      :optimizations :advanced 
      :pretty-print true 
      :source-map "resources/public/js/compiled/background/background.js.map" 
      :externs ["resources/public/js/chrome_extensions.js"]}} 

代碼完全按照所示順序排列。奇怪的是,第一和第三行工作,而第二行什麼都不做。我manifest.json(相關部分)看起來像這樣(沒有解析錯誤):

"background": { 
    "scripts": [ 
    "path/to/compiled/file.js" 
    ] 
}, 
"permissions": [ 
    "alarms", 
    "commands" 
], 
"commands": { 
    "do-something": { 
    "suggested_key": { 
     "default": "Alt+Shift+D" 
    }, 
    "description": "Do it!" 
    } 
} 

我公司擁有先進的編譯和我有正確的extern文件(測試過這不可能是問題)。

最後但並非最不重要的是,我做了一個JavaScript版本,同樣的工作。怎麼會這樣??

chrome.commands.onCommand.addListener(function (command) { 
    console.log(command); 
}); 

在此先感謝!

+0

看看編譯的腳本,並將其與工作版本進行比較。 – wOxxOm

+0

我這樣做了,輸出是一樣的!這是最奇怪的部分。也許我的':cljsbuild'有問題?我不知道還有什麼可以看的。將嘗試構建一個僅使用'cljs.jar'的原始版本來查看我是否有幸運。 – marcelocra

+0

確實這似乎與我的設置有關。我只使用'cljs.jar'設法使命令按預期執行。我會多挖一點,看看能否找出問題的根源。 – marcelocra

回答

0

事實上,它似乎與我的設置有關。

我放棄了我用的是以前的設置(與leincljsbuild),並且僅使用cljs.jar(看看在repo)作爲Quickstart建議從頭開始。

我會從頭建立這個,直到我找出問題所在。那麼我可以在這裏發佈它,以防沒有人首先找到解決方案。

謝謝!