网站搜索

javascript - 在 Firefox 中针对 asp.net(C#) 页面回发无效


我在使用 Mozilla Firefox 时遇到了问题。

我正在使用 ASP.NET 语言开发一个网站,并且我在一个表单中有一个按钮。当我点击按钮时,在 onclick 属性中我调用了一个函数,这个函数正在执行回发(postback)。

这个场景在 Chrome 和 Internet Explorer 上有效,但在 Mozilla Firefox 上无效。我在控制台中得到这个错误:TypeError: 访问严格模式下的调用者函数被禁止。

我的示例按钮是:

<input id="Button1" type="button" onclick="sampleFunc('sample');" value="button" />

而我的示例函数是:

function sampleFunc(reqMessage)
{
  __doPostBack('', reqMessage);
}

我在网上搜索了,很多人都有这个问题,但没有任何解决方案。

你对这个 bug 有什么解决办法吗(!)

编辑 1: 我在 jQuery 网站上找到了一个工单。根据工单,他们修复了那个错误。但我使用了相同的解决方案,但我的错误仍然存在。:(

答案#1

ASP.Net ScriptManager 代码在 __doPostBack 中使用 "caller.callee" 向上遍历调用堆栈以检测无限递归。如果调用堆栈中的任何函数被解析时应用了 "use strict",在 FireFox 上这将失败。解决方法是,在 "use strict" 作用域之外定义一个函数,该函数调用 setTimeout() 来调用一个函数,而这个函数再调用 __doPostBack。setTimeout() 可以让你跳出调用堆栈。

答案#2

我终于找到了答案。

我正在使用 alertfy JavaScript 库来弹出消息。这个库使用了 "Use strict" 表达式。

我已经从这个库中删除了这个表达式,现在没有问题了。我的代码在所有浏览器上都能运行。