我正在开发一个 Firefox 插件,其中包含一个包含一些 HTML 数据的文件。如何将此文件作为字符串加载?
我可以
var contents = Components.utils.import("resource://stuff.html");
但是它随后会尝试将 XML 文件作为 Javascript 执行。我只想要它的内容!
最佳答案
使用此功能,您可以使用 chrome 范围读取文件。
function Read(file)
{
var ioService=Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var scriptableStream=Components
.classes["@mozilla.org/scriptableinputstream;1"]
.getService(Components.interfaces.nsIScriptableInputStream);
var channel=ioService.newChannel(file,null,null);
var input=channel.open();
scriptableStream.init(input);
var str=scriptableStream.read(input.available());
scriptableStream.close();
input.close();
return str;
}
var contents = Read("chrome://yourplugin/stuff.html");
Example loading CSS content and injecting on a page .
编辑:
只是为了更新这个,因为它有点方便!
let { Cc, Ci } = require('chrome');
function read(file){
var ioService = Cc["@mozilla.org/network/io-service;1"]
.getService(Ci.nsIIOService);
var scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"]
.getService(Ci.nsIScriptableInputStream);
var channel = ioService.newChannel2(file, null, null, null, null, null, null, null);
var input = channel.open();
scriptableStream.init(input);
var str = scriptableStream.read(input.available());
scriptableStream.close();
input.close();
return str;
}
关于javascript - 如何从 Firefox 插件中加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772788/