15

私の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、chrome、firefox、operaでうまく機能します。それらのどれもjavascriptエラーを表示せず、ie10だけであり、このエラーはクリックするたびに発生します。誰がこのメソッドを呼び出しているかを追跡していません。これは大きなサイトであり、私が使用するjsコードはどれもそれを呼び出していません。おそらくMicrosoftAjax.jsフレームワークがクリックイベントをバインドし、何かを実行していると思いますが、何が実行されているのかわかりません。

誰か助けてもらえますか?

4

7 に答える 7

19

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">

これらのどちらかが私のために働いた。

于 2013-06-19T23:45:28.487 に答える
5

答えは次のリンクにあります:

http://support.microsoft.com/kb/936993

Microsoft.Ajax.jsを変更する必要がありました。

于 2012-12-28T21:25:36.220 に答える
4

Just to add to mafu josh's answer, the bound prototype can also be the issue.

Here's the code for that

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;
}
于 2014-12-09T16:18:53.743 に答える
1

同様の問題がありました。nileshsaikhedehttp : //forums.asp.net/t/1884400.aspx/1によってここに投稿された解決策に従って解決しました

私がしなければならなかったのは追加することだけでした

<meta http-equiv="X-UA-Compatible" content="IE=7" />

私のマスターページに。

于 2013-03-25T17:40:57.003 に答える
0

私は1つのオプションを理解します。すべての領域に戻る前にポイント値を丸めるためにMicrosoftAjax.jsandファイルを変更しました-以下を参照してください。MicrosoftAjax.debug.jsSys.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ファイルを参照しました。それが行われる方法です。

私はそれが他の人に役立つことを願っています。

于 2013-05-01T13:14:22.947 に答える
0

Internet Explorerを使用している場合は、 Altキーを押しながら [ツール] -----> [互換表示]------->を選択し、互換モードで表示するWebサイトを追加します。それがあなたを助けることを願っています。

于 2014-08-18T10:12:19.967 に答える
0

You can try the following:

<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">

<meta http-equiv="X-UA-Compatible" content="requiresActiveX=true" />
于 2020-12-17T18:45:06.827 に答える