6

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. :(

Mahmut EFE
  • 5,137
  • 5
  • 46
  • 56

5 Answers5

4

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.

maddoxej
  • 1,662
  • 13
  • 19
  • Found the solution here: https://stackoverflow.com/a/25686598/12919 and it worked but I wanted to understand why this works so kept searching until I found your answer. Thanks for the explanation. – Timothy Lee Russell Feb 27 '18 at 02:57
3

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.

Mahmut EFE
  • 5,137
  • 5
  • 46
  • 56
  • This saved me from getting fired. In my case I had to download a `jquery 3.x` CDN to reference it locally in my project and then remove all the instances of `Use strict;`. – Máster Oct 16 '18 at 19:53
  • The "Use strict" expression must be used in alertify javascript library. Actually, that expression must be used in all javascript file. It organizes the javascript file. I think, there is some unusual or error code is alertify js. Because of that reason we are getting an error. So, We have to remove that expression for now. – Mahmut EFE Oct 17 '18 at 08:07
1

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" />
Toby Allen
  • 10,997
  • 11
  • 73
  • 124
AfterGlow
  • 227
  • 3
  • 17
1

I have good news that the problem might be fixed in the latest Firefox and jQuery 3.5.1. I tested the reported scenario today plus other __doPostBack problematic scenarios related to the 'use strict' rule and all of them seem to work without any JS errors.

Do you still experience this issue with the latest jQuery 3.5.1 and latest Firefox 84.0.2?

Rumen Jekov
  • 1,665
  • 2
  • 17
  • 19
0

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" />
th1rdey3
  • 4,176
  • 7
  • 30
  • 66