LT
LT
小狐狸
小狐狸
  • UID22217
  • 注册日期2007-12-10
  • 最后登录2007-12-23
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:5720回复:9

取得网址(firefox_extension)

楼主#
更多 发布于:2007-12-10 21:33
在js里写一个功能,
在toolbar按一下就出现窗口网址,
如下:

function getUrl(){
 var url=document.URL;alert(url);
}

可是有问题,请教为什么?
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
1楼#
发布于:2007-12-10 21:33
extension里吗?  那样的话,document指的是整个firefox窗口, 而每个tab只是其中的一个子文档。

用content.document.URL试试。
LT
LT
小狐狸
小狐狸
  • UID22217
  • 注册日期2007-12-10
  • 最后登录2007-12-23
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2007-12-10 21:33
非常感谢你,那再请问,javascript在extension的作法好像跟一般不太一样,这方面有没有哪有教学的,谢谢。
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
3楼#
发布于:2007-12-10 21:33
基本上是一样的,将整个firefox窗口思考为一个HTML页面,窗口里边的东西就像是html页面里边的元素,
而每个tab就是一个iframe。


http://forums.mozillazine.org/viewtopic ... fc25f4ea73
LT
LT
小狐狸
小狐狸
  • UID22217
  • 注册日期2007-12-10
  • 最后登录2007-12-23
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于: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");
      }
}  
 
都会出现权限问题,有办法解决吗?
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
5楼#
发布于:2007-12-10 21:33
一直是在greasemonkey下写,对xmlhttprequest跨域的问题没有多研究, 以前旧的文章是说用iframe或者用代理服务的方法。

最近好像在哪里看到过一眼最新的版本firefox还是javascript有对跨域的可以。

我会再研究、研究。  你也可以试试安装几个有跨域访问功能的extension,看看他们的源码是怎么写的。
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
6楼#
发布于: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");
}
LT
LT
小狐狸
小狐狸
  • UID22217
  • 注册日期2007-12-10
  • 最后登录2007-12-23
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2007-12-10 21:33
非常感谢指教,马上来研究研究…谢谢!
如果有问题希望还能得到您的解答…
LT
LT
小狐狸
小狐狸
  • UID22217
  • 注册日期2007-12-10
  • 最后登录2007-12-23
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2007-12-10 21:33
感谢wushi777,设置prefs.js可以正常下载,目前在研究greasemonkey…
如果将一个网页获取源码,然后擷取我想要的资讯再用一个窗口打开。
这要从何着手…谢谢
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
9楼#
发布于:2007-12-10 21:33
greasemonkey的GM_xmlhttpRequest方法可以进行跨域操作,用法和XMLHttpRequest差不多。

http://wiki.greasespot.net/Main_Page可以找到很多有用的东西。
游客

返回顶部