PHP: Invalid argument supplied for foreach()

Invalid argument supplied for foreach()

この警告は、 PHP の foreach で、 配列として扱えないものを回そうとしたときに出ます。

実際あったのが SimpleXML を使っていて、 XPath の取得結果でした。

foreach($xml->xpath('xxxx') as $data) {}

この場合、XPath で取得できないと FALSE が返ってきます。 その結果、foreach で警告が出ます。

IE の showModalDialog と初期フォーカス

IE の showModalDialog で開いたウィンドウは、 先頭のリンクやフォームに、 自動的にフォーカスがセットされてしまいます。

ページが読み込まれたときに 下のようになります。

WRITE_0775_01

この状態で [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 を使用しています。


        

WRITE_0775_02

これで、フォーカスが解除されます。

Google サイト内検索

Amazonアソシエイト