Midnightjapan

Tag: HTML_AJAX

未知の実行時エラーです。IE8

by jun on 8月.02, 2011, under PHP, Programing, WEB

いつものIEの独自判断と思って、原因究明をしました。
じつは、ほかでもこのエラーがでていたので、ちょっと記事に残しておきます。

私が発生した問題。

1)「未知の実行時エラーです。」prototype.js

まだまだ未熟なAjax使いのとしては、稚拙なコード形態のせいで、この問題がjavascript側の問題なのか、ターゲットになるHTMLを処理しているPHP側なのかの判断が難しく戸惑いました。結果はこうです。

このコードの問題はブラウザの描画可能横幅と高さを取得したく

var WindowTakasa= window.innerHeight;

としたところ、どうもIEではこれでは値が取得できない。

その後の計算で、IE8では「Undefine」値を処理できず、止まってしまうようなんですね。
IE9では値の取得も、処理も継続してくれました。

ブラウザ判定で条件分岐してIEの場合は

var WindowTakasa = document.documentElement.clientHeight;

として、そのほかのブラウズでは従来通り

var WindowTakasa= window.innerHeight;

として、問題は解決しました。どこが未知の実行時エラーなんでしょうか?IEの判断力が私より稚拙ということですね。

 

2)未知の実行時エラーです。 server.php

これは「HTML_AJAX」というAJAXツールです。こんなものに頼らなければよかった。もしかしたらPrototypeも別で組み込んでいるので、その辺の問題なのかもしれません。本来はその辺のブラウザ互換もやってのけてくれるのがこのツールのいいところなんですが、Prototypeの命令を覚えてくると、似たような言葉で覚えるのが面倒なものが多いです。

これは、独自のプルダウンメニューを表示する機能を作成をしようと、Prototype.jsにより、<div>の中をHTML_AJAX.replace( ‘ID’ , PHPprogram);として、書き換える処理を行っていました。

最初はjavascript側のスコープか、なにかIEの独自違反を疑っていましたが、皆目見当がつかず、2~3時間が経過。

全面的に古いバージョンを戻したら動きました。

どう見比べても、???せめて増やしたのがこの<div>の中に<form>を追加したこと。それが、本人もなぜここに<form>を追加したのかわかりません。

どうも<form>の中に<form>を宣言していたらしく、innerHTMLで<table>の中身を書き換えようとすると読み込み専用となり、同じように未知の実行エラーと表示されるようなので、犯人はこれのようです。

Ajaxで読み込まれるPHPプログラムがわを変更し<form>を削除。

下記のようなときに問題がおきました。

<form name=”A”>

<input type=”button” ?onClick=”MenuOpen(‘open’);”> Ajax実行

<div id=”PullDownMenu”></div>     ←Ajax実行結果をここに書き換えたときに<form></form>をいれてしまった。

</form>

ということです。

この明確な範囲違反を未知の実行時エラーとするIE・・・やっぱり俺より稚拙なのか?w

どうかみなさんが、私のようにつまらないところで、つまづきませんようjに。

コメントなし :, , , , , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!