我需要的是将Firepad的内容(html)定期保存在数据库中。
我试图通过cron服务保存该信息,该服务将调用带有ajax请求的页面,将内容发送到完成该工作的第二个php页面。
如果我手动调用此url,则一切正常,但是如果cron服务调用了该url,则javascript无法执行。
我怎样才能做到这一点?
最佳答案
不幸的是,目前没有直接的方法可以实现这一目标。您对cron作业有一个很好的主意,但是由于必须执行javascript,除非您使用诸如phantomjs之类的无头浏览器加载页面,否则它无法工作。您可以尝试一下。
另外,我们的一位Firepad用户Clément Wehrung通过一些棘手的节点代码解决了这个问题,这些代码在后端服务器的节点内部运行firepad.js。我没有玩过代码,但这可能是一个很好的起点。
node-firepad.js:
/* jshint evil: true */
var jsdom = require('jsdom');
var fs = require('fs');
var Firepad = {};
/**
* Load Dependencies Sources
*/
// HACK: Make Firepad expose FirebaseAdapter
Firepad.FirepadSource = fs.readFileSync(__dirname+'/firepad.js').toString().replace('return firepad.Firepad;', 'firepad.Firepad.FirebaseAdapter = firepad.FirebaseAdapter; return firepad.Firepad;').replace('= global.CodeMirror', '= window.CodeMirror || global.CodeMirror');
Firepad.CodeMirrorSource = fs.readFileSync(__dirname+'/codemirror.js');
/**
* Node Firepad Proxy Loader
*/
Firepad.load = function(ref, callback) {
jsdom.env('<head></head><body><div id="firepad"></div></body>', function (errors, window) {
/**
* Load CodeMirror
*/
var document = document || window.document;
var navigator = navigator || { userAgent:'', platform:'' };
eval(Firepad.CodeMirrorSource+'');
var CodeMirror = window.CodeMirror;
/**
* Load Firepad
*/
eval(Firepad.FirepadSource+'');
// HACK: disable cursor
Firepad.FirebaseAdapter.prototype.sendCursor = function(){};
Firepad.FirebaseAdapter.prototype.setColor = function(){};
/**
* Launch
*/
var codeMirror_ = CodeMirror(window.document.getElementById('firepad'), { lineWrapping: true }, window);
var firepad_ = Firepad.fromCodeMirror(ref, codeMirror_,
{ richTextShortcuts: true, richTextToolbar: true });
if (callback) callback(firepad_, window, errors, document);
});
};
module.exports = Firepad;
然后,您可以使用类似以下的内容:
var FirepadManager = require(__dirname+’/node-firepad’);
FirepadManager.load(firebaseRef, function(firepad, window, errors, document) {
// The callback is called as soon as the Firepad instance is created.
// Hence, you can perform stuff like adding your entities support at this point...
addEntitiesToFirepad(firepad, document);
firepad.on('ready', function() {
if (callback) callback(firepad, window, errors, document);
});
});
如果您走这条路线有麻烦,请告诉我([email protected])。我也许能帮上忙。祝好运!
关于javascript - Firepad获取并保存内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23498656/