Invalid argument supplied for foreach()
この警告は、 PHP の foreach で、 配列として扱えないものを回そうとしたときに出ます。
実際あったのが SimpleXML を使っていて、 XPath の取得結果でした。
foreach($xml->xpath('xxxx') as $data) {}
この場合、XPath で取得できないと FALSE が返ってきます。 その結果、foreach で警告が出ます。
IE の showModalDialog で開いたウィンドウは、 先頭のリンクやフォームに、 自動的にフォーカスがセットされてしまいます。
ページが読み込まれたときに 下のようになります。
この状態で [Enter]キーを押すと、 当然このリンクをクリックしたことになってしまいます。 また、JavaScript で
window.scrollTo(0, xx);
のようなスクロール操作を行っても フォーカスがセットされたオブジェクトが 隠れるようなスクロールはさせてくれません。
対処方法の 1つとして、 次のように showModalDialog で開いたウィンドウの onload イベントで、 ウィンドウ全体にフォーカスを当て直します。
<script> if (window.attachEvent) { window.attachEvent("onload", function() { window.focus(); }); } </script> </body> </html>
IE 用の対策なので window.attachEvent を使用しています。
これで、フォーカスが解除されます。