honjarake blog

自分用にテキトーにまとめる

外部jsファイルの読み込み

イベント監視 メモ - honjarake blog
prototype.jsを読み込む

var includeJS = (function (JS_PATH) {
  var xhr = null;
  if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
   else if (window.ActiveXObject)
  try {
    xhr = new ActiveXObject('Msxml2.XMLHTTP');
  } 
  catch (e) {
    xhr = new ActiveXObject('Microsoft.XMLHTTP');
  }
  xhr.open('GET', JS_PATH, false);
  xhr.send('');
  eval(xhr.responseText);
}) ('http://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js');

まずい…参考にしたサイトをコピーしとくの忘れた

イベント監視 メモ

Event.observe - イベントを監視 - prototype.jsリファレンス
これがやりたいけど、prototype.js を読み込まないといけない

変更オブザーバー (Windows)
Event.observe に変わる機能がないかと探していたときに見つけた
いつか使えそうな機能

監視ならjqueryで似たようなことできるんだろうけど
今のところグリモンで使うことが多いので…

Event.observe は使う必要があるかもしれないので即時的に読み込める方法も探す

多かったミス まとめ

自分が適当に組んでるときよくやっているミスが

  • 誤字、脱字
    効果:undefinedを多発させる。特に大文字と小文字の混在ミス、疲れているとたまに気づかない

例:
var bclick = element;
if(bclick.tagName != 'a') return;
if(bClick.href == 'foo') return; ←ここの変数名
bclick.id = 'bar';

他には

var node = document.createNode(); ← create'Text'Node
var a = getElementsByTagName(); ← documentを参照してない
var b = document.getElementByClassName(); ← getElement's'

備え付けのエディタには補完機能がない
こういうアホみたいな記述違いや抜けが多かった
if文の比較演算子間違えていた(=と==)ときはエラーもでないし
後で気づいて超絶素人過ぎて泣けてきた

matchの戻り値の型

var current = local.href.match();

と変数に格納したあと

current.match();

したらエラーになった
type errorその型にmatch関数ないよだって
typeof current を見てみたら [object] だった

[JavaScript] String.match( regexp ) の返り値は何か?/ 正規表現の変わりに文字列を使うとどうなるのか | 学習B5デスノート

ああ、配列が返っていたのか
以前、どこかのスクリプトでmatch使ったときは意識しないでも動いてたから良く調べずに使っていた
そのときは配列に対してmatchしていなかったのか

var foo = "文字列" + str.match();

みたいにしていて自動的にstring型に変換されていたのかな?(検証はしてない)

とりあえず、nullチェックしてから

var foo = str.match()[0];

で対処した
※環境:firefox 3?.? greasemonkey2.1

JavaScript ページ読込切替しないページ (URLは変わっている・履歴も残る)

一部のサイトでページ移動したように見えるのに
loadイベントが走らないページがあるのは、なぜなのか?
調べて行き着いたのが、このサイト

で、ページの一部だけ読み込み、変更して
URLは読み込んだページに変え、履歴に突っ込むみたいな感じなのかな
(追記:多分、これ→【JavaScript】pushStateとAjaxを使って非同期通信 | Web活

と思って試したんだけど、Firefoxだからなのか、pushState された瞬間を検知しない
いや、pushState イベントの検知タイミングが違うのか?
以前、どこかのサイトで、「~イベントは、Firefoxではキャッシュを読みに行くパターンがあり、そのときは発生しない」と見たような気がする
はてブ登録しとけばよかった…

関係ありそうなサイト(あとで読む、あとで試す)

popStateとpushStateについて

XUL


戻るボタンを押したとき検知しない?(Firefoxじゃないけど)

移動する前に何かできないか(検知できないと思うが)

今回は移動前のクリックイベントを監視してみようと思う。

Stylish で Firefox の ツールバーのスタイルをいじる

Stylishってこんなこともできるんだな
とりあえず、FirefoxのUIであるXUL(ズールって読むらしい)がどうなってるのか見てみる
アドレスバーに

chrome://browser/content/browser.xul

を入力すると見れた

んでもって、Stylish側のコードを書くときのnamespaceは

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

編集したい場合はスタイルの管理から開いて修正する

追記

Stylishのエディタの挿入ボタンからXULを選べば楽
データURIとかも使えたのかあ…

水道管の結露 他

水道管の結露を解決

家の洗濯機周りの床に薄っすら水がにじんでいた
水漏れかと思って知り合いの詳しい人に見てもらったら
水道管が結露を起こしているのが原因らしい

と、いうことで、ホームセンターで対策グッズを買いにいったのだが
結露を防ぐテープ?とやらがあるらしいと聞いたのに、どこにもなかった

結局、水道管に巻く筒状のスポンジ?
(ライトカバー、ラバーチューブというらしい)を買った
直径13cm*2m~16cm*2mで300~500円くらいだった。2mは思ったより長くていらないなあ
とりあえず、切り取って取り付けて様子を見てみる

一応、テープタイプというのも気になるのでもう一度探してみようかな

スクリプト作成

moon child の escape を聞きながらスクリプト作成中
ひとまず完成と言えるが、対応サイトのデザインが変わるらしい?
完全に移行したら、新サイト用も作らなきゃ意味ないな…
デザインが変わっても、もっと柔軟にID引っ張ってこられるように作っておくべきだったな