首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firepad获取并保存内容

Firepad获取并保存内容
EN

Stack Overflow用户
提问于 2014-05-06 23:18:50
回答 1查看 1.1K关注 0票数 2

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

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

如果我手动调用这个url,所有的工作都可以,但是如果这个url被cron服务调用,javascript就不会执行。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2014-05-08 01:21:28

不幸的是,现在还没有一个直接的方法来实现这一点。您对cron作业有一个很好的想法,但是因为javascript必须执行,所以它不会工作,除非您使用像phantomjs这样的无头浏览器来加载页面。你可以试一试。

或者,我们的firepad用户之一,Clément Wehrung用一些棘手的节点代码解决了这个问题,这些代码从后端服务器在节点内部运行firepad.js。我还没有尝试过代码,但这可能是一个很好的起点。

node-firepad.js:

代码语言:javascript
复制
/* 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;

然后,您可以使用类似下面的内容:

代码语言:javascript
复制
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);
  });
});

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23498656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档