Hatena::Groupmoz-addon

there.is.only.memo

2008-01-10

place: URI

10:04

純粋にメモ

Tags フォルダ

uri = 'place:folder=' + PlacesUtils.tagsFolderId;

タグ1個

タグのフォルダ id がわからないといけない。

uri = 'place:folder=' + folderId;

未テスト

var options = PlacesUtils.history.getNewQueryOptions();
var query = PlacesUtils.history.getNewQuery();
query.setFolders([PlacesUtils.bookamrks.tagsFolder], 1);
var tagsResult = PlacesUtils.history.executeQuery(query, options);
var root = tagsResult.root;
root.containerOpen = true;
cc = root.childCount;
for (var i=0; i < cc; i++) {
  var child = root.getChild(i);
  if (child.title == 'タグの名前')
    uri = 'place:folder=' + child.itemId;
}

TimothyTimothy2012/12/17 17:37Your articles are for when it absolutely, positively, needs to be understood oervnihgt.

nqyktvexhkhnqyktvexhkh2012/12/18 20:37KvexAM <a href="http://kcejaefawqoe.com/">kcejaefawqoe</a>

ffzksoffzkso2012/12/21 17:31DM1D4C , [url=http://bmguvcxjwoaw.com/]bmguvcxjwoaw[/url], [link=http://wfrqqdxejmef.com/]wfrqqdxejmef[/link], http://qzncxhbgsjwt.com/

2008-01-09

特定の要素のスクリーンショットをとる

| 01:47

FirebugとかDOMインスペクタでノード選択できるじゃない。あのregionだけスクリーンショットをとるとかできないのかしら。

http://twitter.com/vant/statuses/575317782

data: URL をとってくるまでは、こんな感じにかけます。

function captureElement(aElement)  {
  var win = aElement.ownerDocument.defaultView;
  var width = aElement.offsetWidth;
  var height = aElement.offsetHeight;
  var x = y = 0;
  while (aElement.offsetParent) {
    x += aElement.offsetLeft;
    y += aElement.offsetTop;
    aElement = aElement.offsetParent;
  }

  var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
  canvas.width = width;
  canvas.height = height;
  var ctx = canvas.getContext('2d');
  ctx.clearRect(x, y, width, height); // 念のため

  ctx.drawWindow(win, x, y, width, height, '#000');
  return canvas.toDataURL();
}

拡張機能の形にしてみました (めちゃくちゃやっつけ)。

同じような拡張機能はたくさんありそう。

2008/03/10 install.rdf 更新

AdeleAdele2011/12/30 22:30There is a critical shortage of inoframitve articles like this.

dhqufxcivudhqufxcivu2012/01/02 03:13vjXUe5 , [url=http://cshxxvyfltul.com/]cshxxvyfltul[/url], [link=http://tcolzjuhtruv.com/]tcolzjuhtruv[/link], http://lvbnfyhwthkf.com/

2008-01-07

nsIJSON を使ってみる

11:38

Firefox trunk にネイティブ JSON サポート (IDL) が入ったということなので、xpcshell で試してみました。

指定された URLJSON を取ってくるのはこんな感じに書けると思います (ほとんどコピペ)。

function loadJSON(aURL) {
  var Ci = Components.interfaces;
  var Cc = Components.classes;
  var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
  var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
  var scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"].getService(Ci.nsIScriptableInputStream);

  try {
    var channel= ioService.newChannel(aURL, null, null);
    var input=channel.open();
    scriptableStream.init(input); 
    var x = nativeJSON.decodeFromStream(scriptableStream, scriptableStream.available());
  } catch (e) {
    print(e);
  } finally {
    scriptableStream.close();
  }

  if (x)
    return x;
  return null;
}

var x = loadJSON(arguments[0]);
if (x != null) {
  /* 処理 */
}

以下のような感じで使えます。

./run-mozilla.sh ./xpcshell ./loadjson.js 'http:/example.com/example.json'

JSON Example の例で、以下のようにしてやると

var x = loadJSON(arguments[0]);
if (x != null) {
  print(x.glossary.title);
}

結果は以下のようになります。

example glossary

デコードを試してみましたが、実はエンコードの方が重要なのかもしれません。