Javascript 如何将此语法转换为CoffeeScript(js2coffee不起作用)?

Javascript 如何将此语法转换为CoffeeScript(js2coffee不起作用)?,javascript,coffeescript,Javascript,Coffeescript,基本上,我需要将下面的JavaScript片段翻译成CoffeeScript location.href = "javascript:(" + function() { window.onbeforeunload = function() { notifyBackground(collectData()); return undefined; }; } + "){}"; 返回“undefined”很重要,因为如果我删除页面,浏览器会要求用户确认是否要离开该页面 你可能想

基本上,我需要将下面的JavaScript片段翻译成CoffeeScript

location.href = "javascript:(" + function() {
  window.onbeforeunload = function() {
    notifyBackground(collectData());
    return undefined;
  };
} + "){}";
返回“undefined”很重要,因为如果我删除页面,浏览器会要求用户确认是否要离开该页面

你可能想知道我在干什么。基本上,这是一个问题

我试着做了以下几点:

location.href = "javascript:(" + ->
  window.onbeforeunload = ->
    notifyBackground(collectData())
    return undefined
+ ")()"
但这变成了:

location.href = "javascript:(" + function() {
  return window.onbeforeunload = function(e) {
    notifyBackground(collectData());
    return void 0;
  };
};
return +")()";
使用它给了我:

location.href = "javascript:(" + ->
  window.onbeforeunload = ->
    notifyBackground collectData()
    "undefined"
 + "){}"
如果我通过CoffeeScript运行它,我会得到这个JS输出(这是错误的)

试试网站是js到咖啡(和向后)的转换器。

试试网站是js到咖啡(和向后)的转换器。

这够近了吗

location.href = "javascript:(#{-> 
  window.onbeforeunload = -> 
    notifyBackground(collectData())
    `undefined`
  return
}){}"
汇编至:

location.href = "javascript:(" + (function() {
  window.onbeforeunload = function() {
    notifyBackground(collectData());
    return undefined;
  };
}) + "){}";
请注意未定义字段周围的反勾号,以避免出现
无效0
,以防万一这会造成差异(我不确定它是否会造成差异?)

编辑 在Chrome控制台中,
undefined==void 0
true
,因此

`undefined`
可能只是:

undefined
这够近吗

location.href = "javascript:(#{-> 
  window.onbeforeunload = -> 
    notifyBackground(collectData())
    `undefined`
  return
}){}"
汇编至:

location.href = "javascript:(" + (function() {
  window.onbeforeunload = function() {
    notifyBackground(collectData());
    return undefined;
  };
}) + "){}";
请注意未定义字段周围的反勾号,以避免出现
无效0
,以防万一这会造成差异(我不确定它是否会造成差异?)

编辑 在Chrome控制台中,
undefined==void 0
true
,因此

`undefined`
可能只是:

undefined

... 这与您的第一次尝试给出了类似的答案,但是没有返回undefined。但是如果您通过CoffeeScript解释器运行js2coffee.org的输出,则会得到我问题底部的JS代码。另外,
返回“undefined”
也很重要,因为如果我将其删除,浏览器将使用它来确认是否要离开页面。。。。这与您的第一次尝试给出了类似的答案,但是没有返回undefined。但是如果您通过CoffeeScript解释器运行js2coffee.org的输出,则会得到我问题底部的JS代码。另外,
返回“undefined”
也很重要,因为如果我将其删除,浏览器将使用它来确认是否要离开页面。