基本上,我需要将以下 JavaScript 片段翻译为 CoffeeScript。
location.href = "javascript:(" + function() {
window.onbeforeunload = function() {
notifyBackground(collectData());
return undefined;
};
} + "){}";
返回“未定义”很重要,因为如果我删除它,浏览器会要求用户确认他们想要离开该页面。
你可能想知道我在做什么。基本上,它是一个 location hack for Firefox extension development .
我尝试执行以下操作:
location.href = "javascript:(" + ->
window.onbeforeunload = ->
notifyBackground(collectData())
return undefined
+ ")()"
但这会变成:
location.href = "javascript:(" + function() {
return window.onbeforeunload = function(e) {
notifyBackground(collectData());
return void 0;
};
};
return +")()";
使用js2coffee.org给我这个:
location.href = "javascript:(" + ->
window.onbeforeunload = ->
notifyBackground collectData()
"undefined"
+ "){}"
如果我通过 CoffeeScript 运行它,我会得到这个 JS 输出(这是错误的)。
location.href = "javascript:(" + function() {
return window.onbeforeunload = function() {
notifyBackground(collectData());
return "undefined";
};
};
return +"){}";
最佳答案
这足够接近吗?
location.href = "javascript:(#{->
window.onbeforeunload = ->
notifyBackground(collectData())
`undefined`
return
}){}"
编译为:
location.href = "javascript:(" + (function() {
window.onbeforeunload = function() {
notifyBackground(collectData());
return undefined;
};
}) + "){}";
请注意未定义周围的反引号以避免 void 0
,以防万一产生影响(我不确定是否会产生影响?)
编辑
在 Chrome 控制台中 undefined == void 0
是 true
,所以也许
`undefined`
可以简单地是:
undefined
关于javascript - 如何将此语法转换为 CoffeeScript(js2coffee 不起作用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174208/