阅读:6081回复:9
取得网址(firefox_extension)
在js里写一个功能,
在toolbar按一下就出现窗口网址, 如下: function getUrl(){ var url=document.URL;alert(url); } 可是有问题,请教为什么? |
|
1楼#
发布于:2007-12-10 21:33
greasemonkey的GM_xmlhttpRequest方法可以进行跨域操作,用法和XMLHttpRequest差不多。
http://wiki.greasespot.net/Main_Page可以找到很多有用的东西。 |
|
2楼#
发布于:2007-12-10 21:33
感谢wushi777,设置prefs.js可以正常下载,目前在研究greasemonkey…
如果将一个网页获取源码,然后擷取我想要的资讯再用一个窗口打开。 这要从何着手…谢谢 |
|
3楼#
发布于:2007-12-10 21:33
非常感谢指教,马上来研究研究…谢谢!
如果有问题希望还能得到您的解答… |
|
4楼#
发布于:2007-12-10 21:33
研究了一下,让firefox可以进行跨域request需要设置prefs.js,我没有试。
http://www.zachleat.com/web/2007/08/30/ ... h-firefox/ 然后我把greasemonkey拆开看了一下,发现使用的是iframe的理念,程序自己控制了一个不可见的window,然后进行各种操作。 xmlhttpRequester = new GM_xmlhttpRequester(unsafeContentWin, appSvc.hiddenDOMWindow); ×××××××××××××××××××××××××××××××××××××××××××× // this function is intended to be called in chrome's security context, so // that it can access other domains without security warning GM_xmlhttpRequester.prototype.chromeStartRequest = function(safeUrl, details) { GM_log("> GM_xmlhttpRequest.chromeStartRequest"); var req = new this.chromeWindow.XMLHttpRequest(); this.setupRequestEvent(this.unsafeContentWin, req, "onload", details); this.setupRequestEvent(this.unsafeContentWin, req, "onerror", details); this.setupRequestEvent(this.unsafeContentWin, req, "onreadystatechange", details); req.open(details.method, safeUrl); if (details.overrideMimeType) { req.overrideMimeType(details.overrideMimeType); } if (details.headers) { for (var prop in details.headers) { req.setRequestHeader(prop, details.headers[prop]); } } req.send(details.data); GM_log("< GM_xmlhttpRequest.chromeStartRequest"); } |
|
5楼#
发布于:2007-12-10 21:33
一直是在greasemonkey下写,对xmlhttprequest跨域的问题没有多研究, 以前旧的文章是说用iframe或者用代理服务的方法。
最近好像在哪里看到过一眼最新的版本firefox还是javascript有对跨域的可以。 我会再研究、研究。 你也可以试试安装几个有跨域访问功能的extension,看看他们的源码是怎么写的。 |
|
6楼#
发布于:2007-12-10 21:33
那在请问一下,XMLHttpRequest是否有办法跨domain抓取网页源码。
function Title_Fun(){ var url="http://www.google.com.tw"; if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } if(req) { try{ req.open("GET",url,true); req.send(null); alert(req.responseText); }catch(e){ alert("get_error"); } } else alert("req_Error"); } } 都会出现权限问题,有办法解决吗? |
|
7楼#
发布于:2007-12-10 21:33
基本上是一样的,将整个firefox窗口思考为一个HTML页面,窗口里边的东西就像是html页面里边的元素,
而每个tab就是一个iframe。 http://forums.mozillazine.org/viewtopic ... fc25f4ea73 |
|
8楼#
发布于:2007-12-10 21:33
非常感谢你,那再请问,javascript在extension的作法好像跟一般不太一样,这方面有没有哪有教学的,谢谢。
|
|
9楼#
发布于:2007-12-10 21:33
extension里吗? 那样的话,document指的是整个firefox窗口, 而每个tab只是其中的一个子文档。
用content.document.URL试试。 |
|