gpt4 book ai didi

javascript - Firepad 获取并保存内容

转载 作者:行者123 更新时间:2023-11-29 18:15:53 24 4
gpt4 key购买 nike

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

我尝试使用 cron 服务保存该信息,该服务调用一个页面,该页面使用 ajax 请求将内容发送到完成该工作的第二个 php 页面。

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

我该怎么做?

最佳答案

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

或者,我们的一位 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);
});
});

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

关于javascript - Firepad 获取并保存内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23498656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com