回复不在Firefox for asp.net(C#)页面中工作

时间:2014-12-18 11:23:35

标签: javascript jquery asp.net firefox postback

我遇到了mozilla firefox的问题。

我正在使用asp.net语言开发一个网站,我在表单中有一个按钮。当我点击onclick属性按钮时,我正在调用一个函数和这个功能做回发。

这个scenerio正在研究Chrome和互联网探索者。但它不适用于mozilla firefox。我在控制台中收到此错误:TypeError:访问严格模式调用函数被审查..

我的示例按钮是:

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

我的样本函数是:

function sampleFunc(reqMessage)
{
  __doPostBack('', reqMessage);
}
我在互联网上搜索过。很多人都有这个问题,但没有任何解决方案。

你有关于这个bug的任何解决方案(!)

编辑1:我在jquery网站上找到了ticket。根据勾选,thay修复了那个bug。但我应用了相同的解决方案,但我的错误仍在继续。 :(

5 个答案:

答案 0 :(得分:3)

最终我找到了答案。

我正在使用alertfy javascript库来显示弹出消息。这个图书馆正在使用&#34;使用严格&#34;表达。

我从这个库中删除了这个表达式,现在没有问题。我的代码适用于所有浏览器。

答案 1 :(得分:3)

ASP.Net ScriptManager代码使用__doPostBack中的“caller.callee”向上调用堆栈,以检测无限递归。如果调用堆栈中的任何函数使用“use strict”进行解析,那么在FireFox上将失败。 解决方法是使用“use strict”范围之外的函数调用setTimeout()来调用调用__doPostBack的函数。 setTimeout()让你离开调用堆栈。

答案 2 :(得分:1)

我的建议是保持javascript和Html分开..而不是使用内联调用你可以尝试这种方法

请注意,您必须加载jquery才能使其正常工作。

例如:

<script>
$(document).ready(function()
{

     $(#Button1).click(function()
      {
        PostBack();

        });

});

</script>
    <input id="Button1" type="button" value="button" />

答案 3 :(得分:1)

我有一个好消息,这个问题可能会在最新的 Firefox 和 jQuery 3.5.1 中得到解决。 我今天测试了报告的场景以及与“严格使用”规则相关的其他 __doPostBack 有问题的场景,所有这些场景似乎都没有任何 JS 错误。

使用最新的 jQuery 3.5.1 和最新的 Firefox 84.0.2 是否仍然遇到此问题?

答案 4 :(得分:0)

这是一个解决方法 -

将服务器端按钮控制器添加到您的aspx页面 -

<asp:Button id="btn" runat="server" onclick="btn_click_event" ClientIDMode="static"/>

在您的代码隐藏页面(aspx.cs)上定义将在回发后执行实际工作的事件方法。 现在隐藏这个按钮控制器。

<asp:Button id="btn" runat="server" onclick="btn_click_event"  ClientIDMode="static" style="display:none" />

不要使用Visible=false因为它根本不会渲染按钮。

现在更改你的javascript函数,只需在`btn'上调用click

function sampleFunc()
{
    $('#btn').click();
}

并在HTML输入按钮中调用此函数onclick方法 -

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