阅读:49185回复:4
关于chrome协议
利用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); |
|
1楼#
发布于:2012-04-10 16:58
你是说,可以用chrome://xxxx的地方,把他转换为file://xxxx的吧
这就不太清楚了…… 显然fx内部就有这个转换,你可以去找找源码,或者去MDN看看fx本身是怎么实现的…… |
|
|
2楼#
发布于:2012-04-10 16:58
刚试了一下,你那是取的文件内容,我想取的是文件的路径
|
|
3楼#
发布于:2012-04-10 16:58
白左:你这是什么情况? 你这种方式是利用组件功能,这个需要用户安全认证吧。 有没有其他更好的方式。我试一下这种是否可行。 先谢谢您了 |
|
4楼#
发布于: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 |
|
|