dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

FirefoxでXMLパースエラーにしない方法

2010-12-15 23:06:45 | Firefox
Firefoxで整形式ではないXMLを閲覧しようとすると、パースエラーになってしまいます。

XML パースエラー: 整形式になっていません。
URL: http://mobile.goo.ne.jp/
行番号: 35, 列番号: 64:
---------------------------------------------------------------^

Firefoxの拡張機能の Force Content-Type を使うと、指定のURLパターンで Content-Type を変更できるので、application/xhtml+xml を text/html に変換すると、XMLパースエラーにならずにページを閲覧することができます。

gooのトップページで検索窓にfocusされないようにしたい

2006-04-14 23:49:03 | Firefox
gooのトップページは自動的に検索窓に focus されるようになっていますが、URL を入力しているときに focus が外れてしまうのが不便なので、firefox の拡張機能で focus が検索窓にうつらないようにしたいのです。

xul ファイルに以下のようなスクリプトを記述してみました。
<script type="application/x-javascript">
window.addEventListener('load',
  function (e) {
    var url = window._content.document.location.href;
    if (url.match(/^http:\\/\\/www.goo.ne.jp//)) {
      var aelem = window._content.document.getElementsByTagName('body');
      aelem[0].onload = null;
/*
      aelem[0].addEventListener(
        'load',
        function (e) { e.stopPropagation(); return false; },
        false);
*/
      return false;
    },
    true
);
</script>


body の onload のほうが、form の onload よりも先に呼び出されるためでしょうか?
この方法ではうまくいきませんでした。
他に方法がないか引き続き考えます。。。

Firefoxの拡張機能でブックマーク情報を参照する方法

2006-04-05 22:12:23 | Firefox
Firefoxの拡張機能でブックマークされたURLを取得する方法。

function getBookmark()
{
  hbm = new Array();

  // The RDF service
  var rdf = Components.classes['@mozilla.org/rdf/rdf-service;1']
            .getService(Components.interfaces.nsIRDFService);
	
  // The RDF component utilities
  var rdfc = Components.classes['@mozilla.org/rdf/container-utils;1']
             .getService(Components.interfaces.nsIRDFContainerUtils);

  // The bookmarks service
  var Bookmarks = Components.classes['@mozilla.org/browser/bookmarks-service;1']
             .getService(Components.interfaces.nsIRDFDataSource);
  var kNC_BookmarksRoot = rdf.GetResource("NC:BookmarksRoot");
  var kNC_Name = rdf.GetResource("http://home.netscape.com/NC-rdf#Name");
  var kNC_URL  = rdf.GetResource("http://home.netscape.com/NC-rdf#URL");

  function getBookmarkRecursively(node)
  {
    if (rdfc.IsContainer(Bookmarks, node)) {
      // folder
      var folder = Bookmarks.GetTarget(node, kNC_Name, true);
      var name = folder.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
      var container = Components.classes['@mozilla.org/rdf/container;1']
                      .createInstance(Components.interfaces.nsIRDFContainer);
      container.Init(Bookmarks, node);

      var contents = container.GetElements();
      while (contents.hasMoreElements()) {
        var next = contents.getNext()
                   .QueryInterface(Components.interfaces.nsIRDFResource);
        getBookmarkRecursively(next);
      }
    }
    else {
      // bookmark
      try {
        var bm = Bookmarks.GetTarget(node, kNC_URL, true);
	var url = bm.QueryInterface(Components.interfaces.nsIRDFLiteral).Value
        hbm[url] = true;
      }
      catch (ex) {
      }
    }
  }

  getBookmarkRecursively(kNC_BookmarksRoot);

  return hbm;
}

Firefoxのマウスのスクロールイベント

2006-04-05 21:55:59 | Firefox
Firefoxでマウスのスクロールのイベント取得方法。

element.addEventListener('DOMMouseScroll', event_handler, true);

イベントハンドラでスクロール情報を取得するには、event.detail を参照する。
function event_handler(e) {
  var sgn = e.detail > 0 ? 1 : -1;
  ...
}