【リファやトラックバックを辿って来られた方へ】このページは 断片部のコンテンツの一部です。好き勝手に書いては消ししています。内容に関するご連絡は掲示板もしくは管理者宛フォームにてお願いします。
このグループの「キーワード」(wiki)は、グループメンバーが個人で編集しているものがほとんどです。詳細はキーワード利用ガイドラインをご覧ください。
Ajax IMEで日本語入力する場合、
となると思いますが、これを
とできたら良いな。
http://wushi.hp.infoseek.co.jp/js/ime.js
以下のソースをブックマークレットに追加。
javascript:(function(){var s=document.createElement('script');s.src='http://wushi.hp.infoseek.co.jp/js/ime.js';s.charset='UTF-8';document.body.appendChild(s);var t=document.createElement('script');t.src='http://wushi.hp.infoseek.co.jp/js/roma.js';t.charset='UTF-8';document.body.appendChild(t);})()
グーグルのページとかを開いてブックマークレットを実行すると、入力欄でローマ字かな入力が可能になります。
chasen.orgドメインのページだとブックマークレット版で変換できます。かっこ悪いけど。
Ajax IMEのJavaScript部分は2つのjsファイルでできています。サイズは大きくはありませんがさすがにブックマークレットにはできません。このため、ブックマークレットを実行すると外部JavaScriptファイルを読み込んで実行する仕組みが必要になります。
自分は以下を参考にしました。
secondlifeさんの所にも。
元のime.jsは onload に関数を定義していますが、ブックマークレットはHTMLのロード後に実行されるので、onloadに定義された関数は実行されません。*1
ちょっとアドホックですが、onloadで定義されている関数を別名で定義して、ime.jsの最後で実行すればOK。
Ajax IMEのサイトだと、日本語入力したい入力欄に重なる形でローマ字入力用テキストエリアが表示されるので、見た目上は直接ローマ字を入力しているように見えます。
ブックマークレット化すると、何故かローマ字入力用テキストエリアがHTMLの末尾に来てしまいました。スタイルの指定が効いていないみたい。
Ajax IMEは変換開始と完了のタイミングで、XmlHttpRequestでCGIを呼び出しています。
Ajax IME以外のページからjsファイルを読み込んで実行すると、このXmlHttpRequestの部分でCGIが呼び出されていないように見えます。
調べて見るとクロスドメイン制約が原因らしい。
クロスドメイン制約は「JavaScript(XmlHttpRequest)が実行されたリソースのドメイン」(「.jsファイルが置かれているドメインではない」)と「XmlHttpRequestで呼び出されたリソースのドメイン」が一致していないといけないという制約だそうです。
XmlHttpRequest以外の方法で呼び出せないかを調べ中。JSONというのがあるようですが……。
試しにtelnetでCGIに直接リクエストを投げてみたら、権限が無いとか言われました。そもそもAjax IME以外のページからは実行できないようです。
*1:HTMLのロード中にブックマークレットを実行した場合、重たいサイトだとHTMLのロード完了前にブックマークレットの読み込みが完了して、onloadが実行される事もあります。同じサイトでonloadが実行されたりされなかったりしたのでちょっとはまった。