我遇到了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。但我应用了相同的解决方案,但我的错误仍在继续。 :(
答案 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" />