2012年6月18日月曜日

XULでURLの絶対パスを取得する方法

XULでは以下のようにしてURLの絶対パスを取得することができないようです。

http://d.hatena.ne.jp/brazil/20070103/1167788352

またIOService.newURIというFirefoxのプラグイン用のクラスを使ってみましたがうまくいきませんでした

http://d.hatena.ne.jp/brazil/20070708/1183877867

じゃあどうしたかと言うと

function getURLOnHref() {
 var urlOnHref = "";
 var tag = document.popupNode.tagName;
 if (tag.toString() == "A") {
//  urlOnHref = document.popupNode.getAttribute("href");
  urlOnHref = document.popupNode.href;
 } else {
  urlOnHref = document.popupNode.innerHTML;
 }
 return urlOnHref;
};

何をしているかというと
右クリックを開いたときのカーソルの下にある属性情報を取得してきて
それがAタグだったらhrefを取得するという命令なのですが、ここで

getAttribute("href")

ではなく

href

で直接プロパティ値を指定するとブラウザが良い感じで解釈して絶対パスで返してくれるそうです
今回の場合はpopupNodeならばうまくhrefが取得できましたが、冒頭のURLに記載があるように
XULでは、firstNodeなどのオブジェクトからはhrefがうまく取得できないようです
(確かnullになってしまったような・・・)

ただ、popupNodeも使わない状況でただ文字列で相対パスがある状態で
そこから絶対パスを出す方法はちょっとわからなかったです。。。
完全にpopupNodeに助けられました。すいません。


0 件のコメント:

コメントを投稿