Ignore javascript syntax errors in a page and continue executing the script

JavascriptJqueryHtmlWordpressPlugins

Javascript Problem Overview


I develop plugins for WordPress. It uses some jquery in the user side (themes) as a jquery plugin. The problem is, when there is an javascript error with other plugins made by other autors, my plugin's javascript fails to execute.

And the worst thing is people consider that there is a serious fault with my plugin even though it works 100% fine with error handling conditional statements. But it is actually due to some other javascript syntax errors of some other WP plugin/theme authors.

Is there a way to continue execute my plugin JS ignoring other JS errors. Or can i have suggestions to handle this problem ??

enter image description here

Javascript Solutions


Solution 1 - Javascript

Try :

window.onerror = function(){
   return true;
}

That is if you can include this before the bugged script has been executed.

Solution 2 - Javascript

You should correct the old JavaScript error because it may create many problems, not for right now but for next time.

Put your JavaScript file / code at the top (before JS having error), and call it before JavaScript effected by other JavaScript code.

In case you need handle JavaScript exception at run time, best option is

try { /* run js code */ } 
    catch (error){ /* resolve the issue or bug */ }

Solution 3 - Javascript

You should be able to swallow any error using the error event:

$(window).error(function(e){
    e.preventDefault();
});

I've never attempted this, but it should work in theory.

It should be noted that this probably isn't a great solution to your problem. It could be that your plugin is interfering with other plugins. It is, of course, possible that the errors are no fault of your own, but generally speaking (with publicly released plugins) not the case.

Solution 4 - Javascript

I encountered the same problem: There are a bunch of plugins out there that make too many assumptions and cause JavaScript errors on YOUR page, even when you are being a good citizen; these errors have nothing to do with your plugin.

There's no sense trying to handle errors in other plugins -- IMO it is better to be self-contained but resilient to their errors.

In my case, the errors were halting the jquery DOM ready event, and my JavaScript init code wasn't getting executed. The exact form of the error isn't important though -- the solution is just to fire on multiple events.

The solution for me was to have fallbacks in addition to relying on the jQuery DOM ready event:

  1. I wrapped any code I wanted to fire on the DOM ready event into their own function -- e.g. my_hardened_init_action();
  2. I added a function, my_hardened_init(), that only runs once. It calls my_hardened_init_action() the first time it is called, and does nothing on subsequent calls.
  3. I added various methods to call my_hardened_init() in the WordPress footer. In my case, I only needed two. First, trying the usual jQuery DOM init, but falling back to a simple setTimeout(). So if the jQuery DOM init never fires due to broken JavaScript, the timeout will fire shortly after when the page has finished loading.

You could add multiple other fallbacks -- even add the code to the header if needs be. As my_hardened_init() only runs once, you can try as many times as you like to trigger it.

This has worked on a bunch of client sites with a range of other broken plugins.

Hope this helps.

Solution 5 - Javascript

Solution 6 - Javascript

If you page is running. Use:

$(window).error(function(e){
    	e.preventDefault();
});	 // IGNORE ALL ERROR JQUERY!

or use:

window.onerror = function(){
   return true;
}  // IGNORE ALL ERROR JAVASCRIPT!

Solution 7 - Javascript

<script>
var _z = console;
Object.defineProperty(window, 'console', {
    get: function(){
        if (_z._commandLineAPI) {
         return true;   
        }
        return _z;
    },
    set: function(val) {
        _z = val;
    }
});
</script>

Solution 8 - Javascript

A regular try catch statements won't work for these types of errors.

Possible workarounds:

Use inline-css to float the bar to the left instead of jQuery (I am not sure what the full function of your plugin is but if it just floats the bar to the left why not just use css?)

Have a invisible iframe which tries to run some code on the parent page. if it fails than alert the user(from within this iframe) that it wasn't your fault :)

Solution 9 - Javascript

Perhaps you could try putting your js in an html object, so that it's executed in a separate page. That probably won't help much if the js on the main page wont run to interact with the object. Just something to play with.

Solution 10 - Javascript

Put your call to plugin in

try{
  ......
}
catch(e){

}

Solution 11 - Javascript

This is worked for me:

try{
    //your code
}
catch(error)
{
    return true;
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAakash ChakravarthyView Question on Stackoverflow
Solution 1 - JavascriptCosminView Answer on Stackoverflow
Solution 2 - JavascriptKrishna KumarView Answer on Stackoverflow
Solution 3 - JavascriptShmiddtyView Answer on Stackoverflow
Solution 4 - JavascriptJhongView Answer on Stackoverflow
Solution 5 - JavascriptScottEView Answer on Stackoverflow
Solution 6 - JavascriptRogerio de MoraesView Answer on Stackoverflow
Solution 7 - JavascriptRogerio de MoraesView Answer on Stackoverflow
Solution 8 - JavascriptcodeloveView Answer on Stackoverflow
Solution 9 - JavascriptThe Busy WizardView Answer on Stackoverflow
Solution 10 - JavascriptRahulView Answer on Stackoverflow
Solution 11 - JavascriptEnginerd SunioView Answer on Stackoverflow