私のasp.netサイトは、IE6、IE7、IE8、IE9、Chrome、Safari、Firefox、Operaで正常に動作しています。しかし、IE10ではまったく機能していません。
サイトのどこか(任意のボタン、任意のリンクなど)をクリックすると、次のエラーが返されます。
SCRIPT5022: Sys.ArgumentOutOfRangeException: Value must be an integer.
Parameter name: x
Actual value was 5.999999523162842.
この問題のため、タブなどのJSのものは機能しません。私は問題を追跡しました、そしてそれはMicrosoftAjax.js、特に次の方法にあります。
Sys.UI.Point = function Sys$UI$Point(x, y) {
/// <param name="x" type="Number" integer="true"></param>
/// <param name="y" type="Number" integer="true"></param>
/// <field name="x" type="Number" integer="true"></field>
/// <field name="y" type="Number" integer="true"></field>
var e = Function._validateParams(arguments, [
{name: "x", type: Number, integer: true},
{name: "y", type: Number, integer: true}
]);
if (e) throw e;
this.x = x;
this.y = y;
6以降の他のすべてのIEバージョンで動作しますが、これはかなりの運命です。
HTMLは実際のブラウザーでのみサポートされており、Internet Explorerは除外されていますですが、私のクライアントはサイトがIE10で動作することを本当に望んでいます。
明確にするために、それはie6から9、クロム、Firefoxおよびオペラでうまく機能します。それらのどれもjavascriptエラーを表示せず、ie10だけであり、このエラーはクリックするたびに発生します。私は誰がこのメソッドを呼び出しているかを追跡していません。これは大きなサイトであり、私が使用するjsコードはどれもそれを呼び出していません。おそらくMicrosoftAjax.jsフレームワークがクリックイベントをバインドし、何かを実行していると思いますが、何が実行されているのかわかりません。
誰か助けてもらえますか?
私はニースを見つけました solution ブログ Yuriy :
<script language="javascript">
Sys.UI.Point = function Sys$UI$Point(x, y) {
x = Math.round(x);
y = Math.round(y);
var e = Function._validateParams(arguments, [
{name: "x", type: Number, integer: true},
{name: "y", type: Number, integer: true}
]);
if (e) throw e;
this.x = x;
this.y = y;
}
</script>
これをページに貼り付けて、Sys $ UI $ Point関数をオーバーライドして数値を丸めます。
または、<compilation debug="false">
を設定します
これらのどちらかが私のために働いた。
mafu josh の答えに追加するだけで、バインドされたプロトタイプも問題になる可能性があります。
これがそのためのコードです
Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
x = Math.round(x);
y = Math.round(y);
var e = Function._validateParams(arguments, [
{ name: "x", type: Number, integer: true },
{ name: "y", type: Number, integer: true },
{ name: "width", type: Number, integer: true },
{ name: "height", type: Number, integer: true }
]);
if (e) throw e;
this.x = x;
this.y = y;
this.height = height;
this.width = width;
}
同様の問題がありました。 nileshsaikhedeによってここに投稿された解決策に従った後に解決されました http://forums.asp.net/t/1884400.aspx/1
私がしなければならなかったのは追加することだけでした
<meta http-equiv="X-UA-Compatible" content="IE=7" />
私のマスターページに。
私は1つのオプションを理解します。すべての領域でMicrosoftAjax.js
を返す前に、ポイント値を丸めるためにMicrosoftAjax.debug.js
ファイルとSys.UI.Point
ファイルを変更しました。以下を参照してください。
if (typeof param1 === "number")
{
param1 = Math.round(param1);
}
if (typeof param2 === "number")
{
param2 = Math.round(param2);
}
return new Sys.UI.Point(param1, param2);
ASPXページのScriptManagerコードでScriptオプションを使用して変更されたjsファイルを参照しました。それが行われる方法です。
私はそれが他の人に役立つことを願っています。
internet Explorerを使用している場合は、[〜#〜] alt [〜#〜] [ツール] -----> [互換表示] ------->を選択し、表示するWebサイトを追加します。互換性で。それがあなたを助けることを願っています。