基本上,我需要将以下JavaScript转换为CoffeeScript。
location.href = "javascript:(" + function() {
window.onbeforeunload = function() {
notifyBackground(collectData());
return undefined;
};
} + "){}";
返回“未定义”很重要,因为浏览器会要求用户确认是否要离开该页面(如果我将其删除)。
您可能想知道我正在做的wtf。基本上是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/