IE8とIE6の共存

2010年時点でも、この記事(IE6 と IE7 と IE8 を同じマシンで共存させる方法 - IT戦記)の手法がベスト(だと思う)。

  1. http://tredosoft.com/IE7_standaloneをインストール
    Download Internet Explorer 7 standalone Installer (427KB)
  2. http://tredosoft.com/Multiple_IEをインストール
    Download Multiple IE installer (10.3MB)

WinXP+IE8の環境に入れたけど、注意することは特になし。Multiple_IEで余計なバージョン(IE3とか)を入れないことくらいかな。

Apple-Mailからきた添付ファイルが開けないとき

画像が添付してありますということなので、添付ファイルをみてみると「Attach$_01.xxx」というファイルが添付されていました。
中をみてみると、こんな感じ。

--Apple-Mail-13--957522587
Content-Type: text/html;
	charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

<html><body>画像送ります。<img height="388" width="517" apple-width="yes" apple-height="yes" src="cid:B9D35901-30EB-497F-A46D-ACD81AA00D2A"><img height="388" width="517" apple-width="yes" apple-height="yes" src="cid:FB6FA1D1-D8C6-4D49-864A-BFEB4AEEC40B"><img height="388" width="517" apple-width="yes" apple-height="yes" src="cid:5887CD92-B44E-41E5-9659-3020364BE2C3"></body></html>
--Apple-Mail-13--957522587
Content-Disposition: inline;
	filename=IMGP.jpg
Content-Transfer-Encoding: base64
Content-Type: image/jpeg;
	x-unix-mode=0777;
	x-mac-type=4A504547;
	name="IMGP.jpg"
Content-Id: <B9D35901-30EB-497F-A46D-ACD81AA00D2A>

「IMGP.jpg」という画像ファイルを送ろうとしていることはわかるのですが、BASE64のまま来ています。

BASE64の戻し方

巷によくある BASE64デコーダは1行程度のデータをエンコード/デコードするものがほとんどで、1MB、2MBをクリップボード経由で食わせるとほぼ間違いなく動きません。
唯一ちゃんと動いたのはこちら ⇒ DECODERの詳細情報 : Vector ソフトを探す!
エディタで上のヘッダ部分とお尻のフッタ(--Apple-Mail-13--957522587--)を削除して、別名で保存してから「元のデータへ」ボタンを押すと、C:\Base64\Base64.binというファイルを作ってくれます。
これを「IMGP.jpg」にリネームするとちゃんと画像ファイルになりました。
いまどき、BASE64のデコード自体、ライブラリがいろいろとあるので Rubyでちょいと書いてもそんなにかからないとは思うけど、こうやってちゃんとユーティリティにして公開してくれている方に感謝です。

thickboxがおかしくなる(IE8限定)

※ 原因判明
これがもうびっくりするようなというか腰が抜けるような原因。bodyの最後に thickboxが入っていた。WordPressの script-loader.phpが thickboxL10nを差し込むようなんだけど、どのプラグインを使うとこれが差し込まれるかまでは調査せず。contact form 7あたりが怪しい気がするけど、ほかでもよく使ってるしなぁ。
で、自分で herder.phpに入れた thickboxとダブルで動いていたので、ウィンドウを二重に書いていたということで、チャンチャン。

 

標記の通りなんですが、「thickbox ie バグ」で検索したときに出てくるような、IEのバージョン判定の違いではありません。
thickboxやjQueryは問題ないとされてるバージョンですし。

動きを追ってみると、jQuery(domChunk).click()がIE8のときだけ 2回呼ばれている様子。
だから右の画面のように、1回ちゃんとウィンドウを描画したあとに、2回目を描いてウィンドウがつながっちゃっていると。
return false; してるはずなのに、なんでリエントラントしてるんだ?

そこを追っかけるのは大変なので、お手軽にグローバル変数を用意して、同じファイルを2度続けて描画しないようにしました。

var tb_init_a = "";

function tb_init(domChunk){
  jQuery(domChunk).click(function(){
  var t = this.title || this.name || null;
  var a = this.href || this.alt;
  var g = this.rel || false;
  if (tb_init_a != a) {
    tb_init_a = a;
    tb_show(t,a,g);
    this.blur();
  }
  return false;
  });
}

function tb_remove() {
  tb_init_a = "";
  jQuery("#TB_imageOff").unbind("click");

tb_remove()でグローバル変数の後片付けをしておかないとウィンドウを閉じて、同じウィンドウを開こうとしても二度と開かないので注意。

IEでクッキーがセットできない

なにが悪くてそうなっているかわからないんだけど、一応解決したので対処方法だけ書いておく。

setcookie('wp-postpass_'.COOKIEHASH,$_POST['post_password'],time()+864000,COOKIEPATH);
setcookie('wp-postpass_'.COOKIEHASH,$_POST['post_password'],time()+864000,COOKIEPATH,COOKIE_DOMAIN);

wp-pass.php は本来上の行だけなんだけど、これだとIE8ではクッキーを上書きしてくれなかった。(クッキーがないときの書き込みはOK)
プライバシー設定なんかはもちろん大丈夫で、FirefoxChromeではこういう問題は起きないんだけど、なぜかIEだけ。ちなみに2行にしてるのは、下の行だけだと今度は FirefoxChromeが上書きしてくれないから。なんでだ?
 
ググっても誰も書いてないようなので、うちのIE環境が悪いだけかもしれないけど、みんな本当に大丈夫なのかなぁ?(WordPressでパスワード保護ページ機能なんて使わないんだろうか?)
 

どういうときに上の対処が有効になるか

WordPressのページ表示にパスワード認証を付けて、ちゃんとパスワードを入力しているつもりなのにリジェクトされる場合。
クッキーがないときはうまくいくので、1回目うまくいって安心して別のパスワードページにいったらガーンということもあります。

XPの定期Updateでネットワークがおかしくなった件

久々の日記更新なので軽めの話題で手慣らしなど。
今朝ほど Windows Updateをやって再起動したところ、『Spooler SubSystem Appがコンピュータに損害を与える可能性があるので終了した』というようなメッセージがあがってきていたんだけど、起動時のタイミング的な問題じゃね、とたいして気にもしないで、ダイアログを閉じて、いつものように Wordで文章を作っていて、ちょいと取り消し線をつけようと思ってフォント書式を開こうとすると「応答なし」に。

大き目のファイルだし、図もたくさん入っているからダメだったんだよね、と思ってタスクを終了させて何回かやり直してみたけど、毎度毎度「応答なし」になっちゃってイライラ。エラーメッセージに「プリンタの応答を待たずに作業できます」みたいなのが出てきたので、プリンタを確認しようと思ってスタートメニューから「プリンタとFAX」を開こうとしたらこちらも「応答なし」。
こういうときは深追いしないで「再起動!」が結局速いことが多いので、サクサクっと再起動したらやっぱり『Spooler SubSystem App』がダメらしい。

ここでやっとググると、どうやらプリンタドライバに変なのが入っているとこのエラーが出るらしい。っていってもこちとら別に悪いドライバ入れた覚えもないし、プリンタのインストール自体、ここ1年くらいやってないし。Windows Updateのせいじゃないのと思う気満々なんだけど、そんなこといっても Microsoftがなんとかしてくれるわけないしね。
普段使ってないプリンタをジャンジャン消して再起動してみたらエラーは出なくなったけど、今度はプリンタが見えなくなっちゃった。PINGは打てるけど、共有フォルダもプリンタも見えない。

ここでピーン!

ワイヤレスネットワークのプロパティで「Microsoft ネットワーク用ファイルとプリンタ共有」のチェックを1回はずして OKしてから、再度チェックして OKしたら、共有フォルダもプリンタも見えるようになりました。
ネットワーク共有系のなにかが今回の Windows Updateで変わったんじゃないですかね。こういう目にあう人のための備忘録でした。