=== Flying Scripts ===

Contributors: gijo
Donate link: https://www.buymeacoffee.com/gijovarghese
Tags: defer javascript, 3rd party scripts
Requires at least: 4.5
Tested up to: 6.0
Requires PHP: 5.6
Stable tag: 1.2.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

== Description ==

Download and execute JavaScript on user interaction.

## Quick Links

- [Demo video](https://youtu.be/YJ8TQ3bh-TA)
- [WP Speed Matters](https://wpspeedmatters.com/) - Speed up WordPress
- Join our [Facebook Group](https://www.facebook.com/groups/wpspeedmatters/), a community of WordPress speed enthusiasts
- [Buy me a coffee](https://www.buymeacoffee.com/gijovarghese)

Flying Scripts delay the execution of JavaScript until there is no user activity. You can specify keywords to include JavaScripts to be delayed. There is also a timeout which executes JavaScript when there is no user activity.

### Why should I use this plugin?
JavaScript is very resource-heavy. By delaying the execution of non-critical JavaScript (that are not needed for the initial render), you're prioritizing and giving more resources to critical JavaScript files. This way you will reduce render time, time to interactive, first CPU idle, max Potential input delay etc. This will also reduce initial payload to browsers by reducing the no. of requests.

#### Contributors
- [Gijo Varghese - WP Speed Matters](https://wpspeedmatters.com/)
- [Shay Toder](https://www.shaytoder.com/) 

== Installation ==

1. Visit 'Plugins > Add New'
1. Search for 'Flying Scripts'
1. Activate Flying Scripts for WordPress from your Plugins page.
1. Visit Settings -> Flying Scripts to configure

== Screenshots ==
1. Flying Scripts Settings

== Frequently Asked Questions ==

= What are the ideal scripts to be included? =
Any script that is not crucial for rendering the first view or above fold contents. 3rd party scripts like tracking scripts, chat plugins, etc are ideal.

= What should I put in include keywords =
Any keyword inside your inline script that uniquely identifies that script. For example "fbevents.js" for Facebook Pixel, "gtag" for Google Tag Manager, "customerchat.js" for Facebook Customer Chat plugin.

= How is it different from `defer` =
`defer` tells browser to download the script when found and execute it when HTML parsing is complete. When you include a script in Flying Scripts, those scripts won't be executed until there is a user interaction.

= What is user interaction? =
Events from the user like mouse hover, scroll, keyboard input, touch in mobile device, etc.

= What is timeout? =
Even if there is no user interaction, scripts will be executed after the specified timeout.

== Changelog ==

= 1.2.2 =
- Fix - Added mouse wheel event for user interaction

= 1.2.1 =
- Fix - FacetWP compatibility

= 1.2.0 =
- New - Exclude on pages
- New - Set timeout to Never

= 1.1.9 =
- Security updates

= 1.1.8 =
- [BUGFIX] Disable for admin interface when using W3 Total Cache

= 1.1.7 =
- [BUGFIX] Support for W3 Total Cache

= 1.1.6 =
- [REMOVED] Unnecessary "scroll" event

= 1.1.5 =
- [UPDATE] Set `data-type='lazy'` instead of `type='lazy'`. Removed setting `type='text/javascript'` via JavaScript

= 1.1.4 =
- [BUGFIX] Remove event listeners after scripts are loaded

= 1.1.3 =
- [UPDATE] Copy updates

= 1.1.2 =
- [UPDATE] Minified JavaScript
- [UPDATE] Updated copy, FAQ

= 1.1.1 =
- [BUGFIX] Exclude json and other script tags

= 1.1.0 =
- [NEW] Load scripts on user interaction
- [REMOVED] Load scripts after delay

= 1.0.0 =
- Initial release
