Reputation: 5248
I have a problem with mozilla firefox.
I am developing a web site using asp.net language and I have a button in a form. when i clicked the button at onclick attributies i am calling a function and this funtion doing postback.
this scenerio is working chrome and internet exploerer. but it is not working at mozilla firefox. i am getting this error in console : TypeError: access to strict mode caller function is censored..
my sample button is :
<input id="Button1" type="button" onclick="sampleFunc('sample');" value="button" />
and my sample function is :
function sampleFunc(reqMessage)
{
__doPostBack('', reqMessage);
}
I searched on internet. and many people have rhis problem but there is no any solution.
Do you have any solution about this bug (!)
EDIT 1: I have found a ticket on jquery web site. According to the ticked, thay fixed that bug. But i applied same solition but my bug is continue. :(
Upvotes: 6
Views: 5398
Reputation: 1662
ASP.Net ScriptManager code walks up the call stack with "caller.callee" in __doPostBack to detect infinite recursion. That will fail on FireFox if any function in the call stack was parsed with "use strict" applied.
The workaround is to have a function outside of the scope of "use strict" that calls setTimeout()
to call a function that calls __doPostBack
. setTimeout()
gets you out of the call stack.
Upvotes: 4
Reputation: 5248
Finaly i found the answer.
I am using alertfy javascript library for popup message. This Library is using "Use strict" expression.
And i deleted this expression from this library, Now there is no problem. My code is working on all browsers.
Upvotes: 3
Reputation: 227
My advice is to keep javascript and Html separate ..instead of using inline call you can try this method
Note you must have jquery loaded for this to work.
eg:
<script>
$(document).ready(function()
{
$(#Button1).click(function()
{
PostBack();
});
});
</script>
<input id="Button1" type="button" value="button" />
Upvotes: 1
Reputation: 4358
This is a work around -
Add a server side button controller to your aspx page -
<asp:Button id="btn" runat="server" onclick="btn_click_event" ClientIDMode="static"/>
On your code behind page (aspx.cs) define the event method that will do the actual work after postback. Now make this button controller hidden.
<asp:Button id="btn" runat="server" onclick="btn_click_event" ClientIDMode="static" style="display:none" />
Do not use Visible=false
as it will just won't render the button at all.
Now change your javascript function to just invoke click
on `btn'
function sampleFunc()
{
$('#btn').click();
}
And call this function in your HTML input buttons onclick method -
<input id="Button1" type="button" onclick="sampleFunc();" value="button" />
Upvotes: 0