我正在用 CoffeeScript 编写我的第一个小书签,但我在让任何重要的东西工作时遇到了困难。
这是我想要的脚本,我想用它来使用网页中选定的代码片段更新组织模式文件:
fs = require 'fs'
appendfile = fs.createWriteStream('webjournals.org',
flags: "a"
)
appendfile.write("\n")
appendfile.write("* ")
appendfile.write(document.title)
appendfile.write("\n")
appendfile.end(window.getSelection().toString())
当编译为 JS 时(并通过 bookmarklet-izer 运行),这不起作用。事实上,甚至这也不起作用:
(function() {
var fs;
fs = require('fs');
alert(document.title);
}).call(this);
不过,这有效:
(function() {
var fs;
alert(document.title);
}).call(this);
我在 Coffee 解释器中手动检查了这段代码与浏览器相关的功能,它有效——我可以看到 org 文件中的更改。我错过了什么?
最佳答案
您无法直接从浏览器使用 fs
模块,因为它是一个 Node.js API。
我能想到的最简单的解决方案是 create a web server使用 Coffeescript(例如在 localhost:1234 上)并让书签向您的服务器提交一个片段(使用 jQuery.post ),该片段又将写入本地文件。
以说明性的方式,片段将从左到右:
网页 --> 小书签 --> 本地 HTTP 服务器 --> 组织模式文件 --> Emacs
另一个解决方案是您制作一个 Firefox 插件,它将可以访问您的本地文件系统(但 API 似乎不允许附加到文件)。
有一些新的 API,例如 Filesystem API但它们似乎是一个死胡同,因为您无法访问完整的文件系统,而是访问沙盒文件系统,您也无法从 emacs 访问该文件系统。
关于javascript - 编写第一个 CoffeeScript 书签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110963/