Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2008-09-22

nsICache のメモ

| 15:41 |  nsICache のメモ - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  nsICache のメモ - Ci.nsIZIGOROu

nsICacheService から始める。

const cacheService = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService);

んでもって次は nsICacheSession を作るのだが、

var cacheSession = cacheService.createSession("clientId", Ci.nsICache.STORE_OFFLINE, true);

とかそういう感じで。

最後にCacheの実態を保存する nsICacheEntryDescription を作るんだけど、このとき write/read で明確にフラグを立てないと Fx が落ちまくる。

var cacheEntry = cacheSession.openCacheEntry("cacheKey", Ci.nsICache.ACCESS_WRITE, true);
var oStream = cacheEntry.openOutputStream(0);
oStream.write(data, data.length); // data は String だとする
oStream.close();
cacheEntry.setMetaDataElement("size", data.length);
cacheEntry.setDataSize(data.length);
cacheEntry.markValid();
cacheEntry.close();

上記が書き込み例。

読み込みの場合は、

var cacheEntry = cacheSession.openCacheEntry("cacheKey", Ci.nsICache.ACCESS_READ, true);
var iStream = cacheEntry.openInputStream(0);
var sStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
sStream.init(iStream);
var data = sStream.read(cacheEntry.dataSize);
sStream.close();
iStream.close();
cacheEntry.close();

とかそういう感じ。

折角調べたけど不要なのが分かったのでガックリ。

SachinSachin2012/04/29 00:31It seems clumsy, but I did evieythrng as described. When trying to send to phone I get confirmation that it has been sent. But I don't receive it on my HTC Desire, although C-t-P has been installed and logged in. I set C-t-P to start links automatic.+++Stop Press+++I received the tests in the meantime. It took 10 minutes (!) to arrive. Which means it is not usefull: faster to copy typed information.Sorry to bother helpfull users.

jrrykbfpjrrykbfp2012/04/29 17:51vKLusd <a href="http://jyzhcxjrmwsd.com/">jyzhcxjrmwsd</a>

bujsgcemnmbujsgcemnm2012/04/30 23:01w2RFHf <a href="http://wzcfoagjokng.com/">wzcfoagjokng</a>

2008-09-17

子要素を全部削除

| 16:21 |  子要素を全部削除 - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  子要素を全部削除 - Ci.nsIZIGOROu

while (element.firstChild)
  element.removeChild(element.firstChild);

でいいかな?innerHTML = "" だとtext nodeが残るしなー。

takenspctakenspc2008/09/17 20:02DOM 2 Range を使う方法もあるようです。
http://purl.org/jintrick/Personal/DOM_Range.html#EMPT_DIV

mayokara384mayokara3842008/09/17 21:44element.parentNode.replaceChild(element.cloneNode(false), element)という方法もありますが、イベントリスナが消えます。

ZIGOROuZIGOROu2008/09/19 10:17> takenさん
おー、そんな方法もあるんですね。ありがとうございます。
> mayokara384 さん
nrhd
これは目から鱗www
cloneNode(false)で自分自身置換かー。

2008-09-16

IE6,7 で使えるDOM Storageを作ってみた

| 18:26 |  IE6,7 で使えるDOM Storageを作ってみた - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  IE6,7 で使えるDOM Storageを作ってみた - Ci.nsIZIGOROu

と言う訳でIE6 or 7持ってる人は

を試してみてくだしあ

細かい事は今度書く。

ちなみにソース

追記

ちゃんと告知した。

RolandaRolanda2012/07/23 15:16Wow! Talk about a pstoing knocking my socks off!

rslzmzarnprslzmzarnp2012/07/24 12:14nDu9Ki , [url=http://ghhflqsjjiyj.com/]ghhflqsjjiyj[/url], [link=http://tweiplytpwjr.com/]tweiplytpwjr[/link], http://vmtvtossqitf.com/

pkottympkottym2012/07/25 23:06i4zizL <a href="http://jpetmcjtbwhr.com/">jpetmcjtbwhr</a>

ksspnqjpymksspnqjpym2012/07/26 23:324kDpNv , [url=http://jmeuoqcailjc.com/]jmeuoqcailjc[/url], [link=http://uxtezrlabtut.com/]uxtezrlabtut[/link], http://otypxzpzbhbl.com/

2008-08-29

YSTの検索結果に順位つけるグリモン

| 10:51 |  YSTの検索結果に順位つけるグリモン - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  YSTの検索結果に順位つけるグリモン - Ci.nsIZIGOROu

どっかで既出なんだけども。

// ==UserScript==
// @name           AddRankingNumberToGoogleSearchResults
// @namespace      http://moz-addon.g.hatena.ne.jp/ZIGOROu/
// @description    Add ranking number to google search results
// @include        http://www.google.co.jp/search?*
// @include        http://www.google.com/search?*
// ==/UserScript==
(function() {
  function parseQuery() {
	var query = {};
	location.search.replace(/^\?/, "").split(/&/).forEach(
	  function(pair) {
		pair = pair.split(/=/);
		if (query[pair[0]] && !(query[pair[0]] instanceof Array)) {
		  query[pair[0]] = [ query[pair[0]], decodeURIComponent(pair[1]) ];
		}
		else {
		  query[pair[0]] = decodeURIComponent(pair[1]);
		}
      }
	);

	return query;
  }

  var q = parseQuery();
  var offset = parseInt(q.start || 0);
  var ss = document.evaluate('//h3[@class="r"]/a', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i = 0; i < ss.snapshotLength; i++) {
	ss.snapshotItem(i).textContent = (offset + 1 + i).toString() + ". " + ss.snapshotItem(i).textContent;
  }
})();

SEE ALSO

AmritbirchhinaAmritbirchhina2012/07/21 00:18:Выходит ошибка в верхней части страници:Notice: Undefined index: gloabl_character_set in /home/domains/***/public_html/yarss.php on line 181Notice: Undefined index: gloabl_character_set in /home/domains/***/public_html/yarss.php on line 191CРїncok pa3pewehhbx k nhaekcaunn oopymob b RSS: (opml)И такие крякозабры внизуTeРїepb bb moxete aobabntb xenaembe Рїotokn b Rhaekc.Nonck Рїo bnoram.как можно это исправить?

bjbgpapklbjbgpapkl2012/07/22 00:56D9o8BB <a href="http://lgfaowjshxyo.com/">lgfaowjshxyo</a>

fjsohnqfjsohnq2012/07/22 22:052GT7fJ <a href="http://jimhxqnebtyd.com/">jimhxqnebtyd</a>

bkpweycgybkpweycgy2012/07/24 03:10ZSh9r8 , [url=http://bjrtrpuqzpet.com/]bjrtrpuqzpet[/url], [link=http://pwbzxbkudxxr.com/]pwbzxbkudxxr[/link], http://ftfwtvnwdupc.com/

JamPhypeJamPhype2017/05/07 14:02Cialis Generique En 24h Amoxicillin Acid Reflux Buy Rx Online Medicines Amoxicilina Internet Saturday Delivery Visa Accepted [url=http://byuvaigranonile.com]viagra[/url] Propecia Originales Zithromax Side Effects Fda Valtex Nex Day Cod Generic Isotretinoin Direct Discount Amex Accepted Levitra De Bayer Precios

2008-08-11

nsIScriptSecurityManager のメモ

| 15:59 |  nsIScriptSecurityManager のメモ - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  nsIScriptSecurityManager のメモ - Ci.nsIZIGOROu

危険な URL を判別する為の XPCOM が存在すると言うのを先ほど知ったのでメモ。

使い方

nsIScriptSecurityManager のメソッド ( noscript 以外 )
  • void checkLoadURI ( nsIURI from , nsIURI uri , PRUint32 flags )
  • void checkLoadURIStr ( AUTF8String from , AUTF8String uri , PRUint32 flags )

ここらへんは from から読み出す前提で、uri はどうよってのを確認するメソッドのようだ。flags の部分は nsIScriptSecurityManager の定数。

  • void checkLoadURIStrWithPrincipal ( nsIPrincipal principal , AUTF8String uri , PRUint32 flags )
  • void checkLoadURIWithPrincipal ( nsIPrincipal principal , nsIURI uri , PRUint32 flags )

from の代わりに nsIPrincipal が使えるようになる。Firefox 3 からだと document.nodePrincipal を用いて、任意のページの制限が取れるっぽぃ。

  • void checkSameOriginPrincipal ( nsIPrincipal sourcePrincipal , nsIPrincipal targetPrincipal )
  • void checkSameOriginURI ( nsIURI sourceURI , nsIURI targetURI , PRBool reportError )

XHR 系か?same origin policy に反してるかどうかをチェックするんだろう、きっと。

  • void disableCapability ( char* capability )
  • void enableCapability ( char* capability )

分からない。あとで。

  • nsIPrincipal getChannelPrincipal ( nsIChannel channel )
  • nsIPrincipal getCodebasePrincipal ( nsIURI URI )
  • PRBool isCapabilityEnabled ( char* capability )
  • PRBool isSystemPrincipal ( nsIPrincipal principal )
  • void revertCapability ( char* capability )
  • void setCanEnableCapability ( AUTF8String certificateFingerprint , char* capability , PRInt16 canEnable )

><

使われ方

http://mxr.mozilla.org/firefox/source/toolkit/content/contentAreaUtils.js#56 とか見るといいです。

function urlSecurityCheck(aURL, aPrincipal, aFlags)
{
  const nsIScriptSecurityManager =
    Components.interfaces.nsIScriptSecurityManager;
  var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"]
                         .getService(nsIScriptSecurityManager);
  if (aFlags === undefined)
    aFlags = nsIScriptSecurityManager.STANDARD;

  try {
    if (aURL instanceof Components.interfaces.nsIURI)
      secMan.checkLoadURIWithPrincipal(aPrincipal, aURL, aFlags);
    else
      secMan.checkLoadURIStrWithPrincipal(aPrincipal, aURL, aFlags);
  } catch (e) {
    // XXXmano: dump the principal url here too
    throw "Load of " + aURL + " denied.";
  }
}

関連リンク

今日のJavaScriptプチtips

| 15:05 |  今日のJavaScriptプチtips - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  今日のJavaScriptプチtips - Ci.nsIZIGOROu

文字列の存在確認からtoLowerCase()までワンライナー

var name = "HolyGrail";
alert(name && name.toLowerCase()); // holygrail

for each - let で要素を列挙

for each ( let item in "yappo hirose31 tokuhirom" ) {
  alert( item );
}

まとめ

chrome://browser/content/pageinfo/feeds.js

JaylynnJaylynn2011/12/30 15:44You've got to be kdiding me-it's so transparently clear now!

cihkqonnncihkqonnn2011/12/31 17:09QECXVo <a href="http://eyjqeqncluyu.com/">eyjqeqncluyu</a>

twgxckytwgxcky2011/12/31 22:47Nd72Oe , [url=http://pqvzzcatthaj.com/]pqvzzcatthaj[/url], [link=http://ymbrvznkcolt.com/]ymbrvznkcolt[/link], http://hfquuyoupfdu.com/

utczioutczio2012/01/01 22:33I53GJv <a href="http://gpmloblunvmv.com/">gpmloblunvmv</a>

ivsuvegsivsuvegs2012/01/02 03:26mE8149 , [url=http://zopvzvpgbsrz.com/]zopvzvpgbsrz[/url], [link=http://dmdirlxxmhtw.com/]dmdirlxxmhtw[/link], http://dabigaimaqjd.com/