【发布时间】:2012-12-12 09:09:39
【问题描述】:
我的 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 框架已经绑定了点击事件并且它正在执行某些东西,但我不确定它正在执行什么。
谁能帮帮我?
【问题讨论】:
-
在调用你的函数之前,你能把数字四舍五入(或者用
parseInt()将它们转换为整数)吗? -
你调试了吗?为什么要传递一个浮点数? -1 未表现出尽职调查。这可能是因为您正在乘以或除以数字并遇到精度问题,如果是这样,只需将数字四舍五入
-
当我有一个损坏的 jQuery 插件或糟糕的 JavaScript 代码时,这种事情通常会发生在我身上。页面上有任何使用 Ajax 的内容吗?您是否看到任何引用了不存在的东西的代码?如果您在 Firefox 或 Chrome 中查看该页面,您在点击
Control-Shift-J时是否看到任何错误? -
我无法追踪谁在调用这些方法。我没有打电话给他们,我认为这是 MicrosoftAjax.js 内部的东西
-
您在使用 iFrame 吗?这段代码之前已经引起了一些麻烦,尤其是在带有 iFrame 的页面上。 forums.asp.net/t/1078598.aspx/1。另外:support.microsoft.com/kb/936993
标签: javascript asp.net vb.net internet-explorer-10