基本上我需要将以下一段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 +"){}";
答案 0 :(得分:3)
这足够接近吗?
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
答案 1 :(得分:1)
尝试使用this网站http://js2coffee.org/ js to coffee(和backwards)转换器。