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

标签 javascript coffeescript

基本上,我需要将以下 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 0true,所以也许

`undefined`

可以简单地是:

undefined

关于javascript - 如何将此语法转换为 CoffeeScript(js2coffee 不起作用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174208/

相关文章:

javascript - 如何只为一个特定页面添加 JavaScript?

javascript - $cordovaContacts 加载速度非常慢

javascript - jQuery 可以处理不在 DOM 中的 html 字符串吗?

javascript - 检查是否在所有(大多数)浏览器上启用了 javascript?

javascript - 我的 jquery-ui-rails CoffeeScript 无法正常工作

javascript - 如何从 jQuery UI Datepicker 语言文件中读取月份名称?

node.js - 如何从 node.js 打开终端应用程序?

javascript - 找不到在 app/assets/javascript 中创建的 CoffeeScript 函数

html - 是否可以在 html 文件的脚本标签中编译 Coffeescript 代码?

javascript - 理解对象的属性+回调