Самописный плагин, который сохраняет в /tmp исходник страницы в виде файла wsourse.html, после этого запускается внешний bash-скрипт, который просто копирует файл в /домашнюю директорию/wsource.text
Вот исходник плагина
var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
var tab_utils = require("sdk/tabs/utils");
var { viewFor } = require("sdk/view/core");
const {Cc,Ci,Cu, components} = require("chrome");
Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm")
Cu.import("resource://gre/modules/Downloads.jsm");
Cu.import("resource://gre/modules/osfile.jsm")
Cu.import("resource://gre/modules/Task.jsm");
var domSerializer = Cc["@mozilla.org/xmlextras/xmlserializer;1"]
.createInstance(Ci.nsIDOMSerializer);
/*var showHotKey = Hotkey({
combo: "control-m",
onPress: function() */
var button = buttons.ActionButton({
id: "CopySource",
label: "test copy source",
icon: {
"16": "./small.png",
"32": "./medium.png",
"64": "./big.png"
},
onClick: handleClick
});
function handleClick(state){
var tab = tabs.activeTab;
var lowLevelTab = viewFor(tab);
var browser = tab_utils.getBrowserForTab(lowLevelTab);
var ser = new XMLSerializer();
var st = ser.serializeToString(browser.contentDocument);
//сохраняю полученный html код страницы
var file = FileUtils.getFile("TmpD", ["html.tmp"]);
file.createUnique(components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE);
var ostream = FileUtils.openSafeFileOutputStream(file);
var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
createInstance(components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
var istream = converter.convertToInputStream(st);
NetUtil.asyncCopy(istream, ostream, function(status) {
if (!components.isSuccessCode(status)) {
return;
}
});
//запускаю скрипт как аргумент bash
var path = "/bin/bash"
var args = ["/bin/copyscript.bash"];
console.log(args);
var file1 = Cc["@mozilla.org/file/local;1"]
.createInstance(Ci.nsIFile);
file1.initWithPath(path);
var process = Cc["@mozilla.org/process/util;1"]
.createInstance(Ci.nsIProcess);
process.init(file1);
process.run(true, args, args.length);
}
#!/bin/bash
sleep 5
cp /tmp/wsourse.html ~/wsource.text
exit 0
Плюс ко всему, если нажать второй раз, то всё работает как надо, т.е. wsourse.html копируется в wsource.text
Поидее скрипт не должен запускаться пока не закончиться сохранение файла в tmp, но на всякий случай ставлю sleep 5, не помогает.
ЧЯДНТ?