Javascript Firepad获取并保存内容

Javascript Firepad获取并保存内容,javascript,firebase,firepad,Javascript,Firebase,Firepad,我需要的是在数据库中定期保存firepad的内容(html) 我尝试使用cron服务保存这些信息,该服务调用一个页面,该页面通过ajax请求将内容发送到执行此任务的第二个php页面 如果我手动调用此url,则所有工作正常,但如果该url由cron服务调用,则javascript不会执行 我如何才能做到这一点?不幸的是,目前还没有直接的方法来实现这一点。您对cron作业有一个很好的想法,但是由于必须执行javascript,除非您使用无头浏览器加载页面,否则它将无法工作。你可以试试看 或者,我们的

我需要的是在数据库中定期保存firepad的内容(html)

我尝试使用cron服务保存这些信息,该服务调用一个页面,该页面通过ajax请求将内容发送到执行此任务的第二个php页面

如果我手动调用此url,则所有工作正常,但如果该url由cron服务调用,则javascript不会执行


我如何才能做到这一点?

不幸的是,目前还没有直接的方法来实现这一点。您对cron作业有一个很好的想法,但是由于必须执行javascript,除非您使用无头浏览器加载页面,否则它将无法工作。你可以试试看

或者,我们的一个firepad用户通过一些复杂的节点代码解决了这个问题,这些代码在后端服务器的节点内部运行firpad.js。我还没有玩过代码,但这可能是一个很好的起点

node-firpad.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;

如果你走这条路遇到麻烦,请告诉我(michael@firebase.com). 我也许能帮上忙。祝你好运

不幸的是,目前还没有直接的方法来实现这一点。您对cron作业有一个很好的想法,但是由于必须执行javascript,除非您使用无头浏览器加载页面,否则它将无法工作。你可以试试看

或者,我们的一个firepad用户通过一些复杂的节点代码解决了这个问题,这些代码在后端服务器的节点内部运行firpad.js。我还没有玩过代码,但这可能是一个很好的起点

node-firpad.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;

如果你走这条路遇到麻烦,请告诉我(michael@firebase.com). 我也许能帮上忙。祝你好运

感谢您的快速回答,我认为phantomjs是解决我问题的最佳解决方案,但我在共享主机上提供了此服务,没有phatomjs支持。关于提出的第二个解决方案,这个问题太复杂了。通过一个简单的json提要获取当前内容会很好。。。我将等待这个功能。感谢您的快速回答,我认为phantomjs是解决我问题的最佳解决方案,但我在共享主机上提供了这个服务,没有phatomjs支持。关于提出的第二个解决方案,这个问题太复杂了。通过一个简单的json提要获取当前内容会很好。。。我将等待此功能。