kissau
小狐狸
小狐狸
  • UID38348
  • 注册日期2012-02-24
  • 最后登录2012-04-20
  • 发帖数9
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:49185回复:4

关于chrome协议

楼主#
更多 发布于:2012-04-10 16:58
利用scriptish给页面注入css,这个css如果用file协议能找到,但是如果利用chrome协议找不到文件。
请问如何将chrome协议的路径转换成file路径。
或者其他什么方式

var link = document.createElement('link');
link.setAttribute('rel','stylesheet');
link.setAttribute('href','[color=#BF0040]file:///xxx.css[/color]');
link.setAttribute('type','text/css');
document.body.appendChild(link);
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2025-04-27
  • 发帖数2040
  • 经验656枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
1楼#
发布于:2012-04-10 16:58
你这是什么情况?
能用url的地方一定可以用chrome,反之不然
例如jar:file:///XXXX/Firefox/omni.ja!/chrome/

尝试用如下方法访问:
function getContents(aURL){
  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(aURL,null,null);
  var input=channel.open();
  scriptableStream.init(input);
  var str=scriptableStream.read(input.available());
  scriptableStream.close();
  input.close();
  return str;
}

try{
  alert(getContents("chrome://browser/content/browser.css"));
  alert(getContents("http://www.mozillazine.org/"));
}catch(e){alert(e)}


via mozillazine
-いたんですか? -ええ、ずっと
kissau
小狐狸
小狐狸
  • UID38348
  • 注册日期2012-02-24
  • 最后登录2012-04-20
  • 发帖数9
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2012-04-10 16:58
白左:你这是什么情况?
能用url的地方一定可以用chrome,反之不然
例如jar:file:///XXXX/Firefox/omni.ja!/chrome/

尝试用如下方法访问:
function getContents(aURL){
  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(aURL,null,null);
  var input=channel.open();
  scriptableStream.init(input);
  var str=scriptableStream.read(input.available());
  scriptableStream.close();
  input.close();
  return str;
}

try{
  alert(getContents("chrome://browser/content/browser.css"));
  alert(getContents("http://www.mozillazine.org/"));
}catch(e){alert(e)}


via mozillazine
回到原帖

你这种方式是利用组件功能,这个需要用户安全认证吧。
有没有其他更好的方式。我试一下这种是否可行。
先谢谢您了
kissau
小狐狸
小狐狸
  • UID38348
  • 注册日期2012-02-24
  • 最后登录2012-04-20
  • 发帖数9
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2012-04-10 16:58
刚试了一下,你那是取的文件内容,我想取的是文件的路径
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2025-04-27
  • 发帖数2040
  • 经验656枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
4楼#
发布于:2012-04-10 16:58
你是说,可以用chrome://xxxx的地方,把他转换为file://xxxx的吧
这就不太清楚了……
显然fx内部就有这个转换,你可以去找找源码,或者去MDN看看fx本身是怎么实现的……
-いたんですか? -ええ、ずっと
游客

返回顶部