CINXE.COM
NV Access | Download NVDA
<!DOCTYPE HTML> <!--[if IEMobile 7 ]><html class="no-js iem7" manifest="default.appcache?v=1"><![endif]--> <!--[if lt IE 7 ]><html class="no-js ie6" lang="en"><![endif]--> <!--[if IE 7 ]><html class="no-js ie7" lang="en"><![endif]--> <!--[if IE 8 ]><html class="no-js ie8" lang="en"><![endif]--> <!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--> <html class="no-js" lang="en"><!--<![endif]--> <head> <title>NV Access | Download NVDA</title> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- Remove if you're not building a responsive site. (But then why would you do such a thing?) --> <link rel="pingback" href="https://www.nvaccess.org/xmlrpc.php" /> <link rel="shortcut icon" href="https://www.nvaccess.org/wp-content/themes/nvaccess2017/img/favicon.png"/> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <meta name='robots' content='max-image-preview:large' /> <script>window._wca = window._wca || [];</script> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.nvaccess.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.4"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style> :root { --include-mastodon-feed-bg-light: rgba(100, 100, 100, 0.15); --include-mastodon-feed-bg-dark: rgba(155, 155, 155, 0.15); --include-mastodon-feed-accent-color: rgb(99, 100, 255); --include-mastodon-feed-accent-font-color: rgb(255, 255, 255); --include-mastodon-feed-border-radius: 0.25rem; } .include-mastodon-feed .status { margin: 0.5rem 0 1.5rem; border-radius: var(--include-mastodon-feed-border-radius); padding: 0.5rem; background: var(--include-mastodon-feed-bg-light); } .include-mastodon-feed .status a { color: var(--include-mastodon-feed-accent-color); text-decoration: none; word-wrap: break-word; } .include-mastodon-feed .status a:hover { text-decoration: underline; } .include-mastodon-feed .avatar { height: 1.25rem; border-radius: var(--include-mastodon-feed-border-radius); vertical-align: top; } .include-mastodon-feed .account { font-size: 0.8rem; } .include-mastodon-feed .account a { display: inline-block; } .include-mastodon-feed .account .booster { float: right; font-style: italic; } .include-mastodon-feed .boosted .account > a:first-child, .include-mastodon-feed .contentWarning a { border-radius: var(--include-mastodon-feed-border-radius); padding: 0.15rem 0.5rem; background: var(--include-mastodon-feed-accent-color); color: var(--include-mastodon-feed-accent-font-color); } .include-mastodon-feed .boosted .account > a:first-child:hover, .include-mastodon-feed .contentWarning a:hover { border-radius: var(--include-mastodon-feed-border-radius); padding: 0.15rem 0.5rem; background: var(--include-mastodon-feed-accent-font-color); color: var(--include-mastodon-feed-accent-color); text-decoration: none; } .include-mastodon-feed .contentWrapper.boosted { margin: 0.5rem 0; padding: 0.5rem; background: var(--include-mastodon-feed-bg-light); } .include-mastodon-feed .contentWarning { text-align: center; margin: 1rem; padding: 1rem; } .include-mastodon-feed .contentWarning .title { font-weight: bold; } .include-mastodon-feed img.emoji { height: 1rem; } .include-mastodon-feed .content .invisible { display: none; } .include-mastodon-feed .media { display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap; gap: 0.5rem; margin: 1rem; } .include-mastodon-feed .media > div { flex-basis: calc(50% - 0.5rem); flex-grow: 1; } .include-mastodon-feed .media > .image { font-size: 0.8rem; font-weight: bold; text-align: center; } .include-mastodon-feed .media > .image a { border-radius: var(--include-mastodon-feed-border-radius); display: block; aspect-ratio: 1.618; background-size: cover; background-position: center; } .include-mastodon-feed .media > .image a:hover { filter: contrast(110%) brightness(130%) saturate(130%); } .include-mastodon-feed .media > .gifv video { max-width: 100%; } .include-mastodon-feed .card { border-radius: var(--include-mastodon-feed-border-radius); margin: 1rem 0.5rem; } .include-mastodon-feed .card iframe { border-radius: var(--include-mastodon-feed-border-radius); width: 100%; height: 100%; aspect-ratio: 2 / 1.25; } .include-mastodon-feed .card a { border-radius: var(--include-mastodon-feed-border-radius); display: block; text-decoration: none; color: #000; } .include-mastodon-feed.dark .card a { color: #fff; } .include-mastodon-feed .card a:hover { text-decoration: none; background: var(--include-mastodon-feed-accent-color); color: var(--include-mastodon-feed-accent-font-color); } .include-mastodon-feed .card .meta { background: var(--include-mastodon-feed-bg-light); font-size: 0.8rem; padding: 1rem; } .include-mastodon-feed .card .image { margin-bottom: 0.5rem; text-align: center; } .include-mastodon-feed .card .image img { max-width: 75%; } .include-mastodon-feed .card .title { font-weight: bold; } .include-mastodon-feed.dark .status, .include-mastodon-feed.dark .contentWrapper.boosted, .include-mastodon-feed.dark .card { background: var(--include-mastodon-feed-bg-dark); } </style> <link rel='stylesheet' id='wc-stripe-blocks-checkout-style-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-gateway-stripe/build/upe_blocks.css?ver=9721965e3d4217790b0c028bc16f3960' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://www.nvaccess.org/wp-includes/css/dist/block-library/style.min.css?ver=6.5.4' type='text/css' media='all' /> <style id='wp-block-library-inline-css' type='text/css'> .has-text-align-justify{text-align:justify;} </style> <link rel='stylesheet' id='mediaelement-css' href='https://www.nvaccess.org/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17' type='text/css' media='all' /> <link rel='stylesheet' id='wp-mediaelement-css' href='https://www.nvaccess.org/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=6.5.4' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css' type='text/css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='wpmenucart-icons-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/css/wpmenucart-icons.min.css?ver=2.14.3' type='text/css' media='all' /> <style id='wpmenucart-icons-inline-css' type='text/css'> @font-face{font-family:WPMenuCart;src:url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.eot);src:url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.eot?#iefix) format('embedded-opentype'),url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.woff2) format('woff2'),url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.woff) format('woff'),url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.ttf) format('truetype'),url(https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/fonts/WPMenuCart.svg#WPMenuCart) format('svg');font-weight:400;font-style:normal;font-display:swap} </style> <link rel='stylesheet' id='wpmenucart-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/css/wpmenucart-main.min.css?ver=2.14.3' type='text/css' media='all' /> <link rel='stylesheet' id='woocommerce-layout-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/css/woocommerce-layout.css?ver=9.0.0' type='text/css' media='all' /> <style id='woocommerce-layout-inline-css' type='text/css'> .infinite-scroll .woocommerce-pagination { display: none; } </style> <link rel='stylesheet' id='woocommerce-smallscreen-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/css/woocommerce-smallscreen.css?ver=9.0.0' type='text/css' media='only screen and (max-width: 768px)' /> <link rel='stylesheet' id='woocommerce-general-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/css/woocommerce.css?ver=9.0.0' type='text/css' media='all' /> <style id='woocommerce-inline-inline-css' type='text/css'> .woocommerce form .form-row .required { visibility: visible; } </style> <link rel='stylesheet' id='reset-css' href='https://www.nvaccess.org/wp-content/themes/nvaccess2017/reset.css?ver=6.5.4' type='text/css' media='all' /> <link rel='stylesheet' id='screen-css' href='https://www.nvaccess.org/wp-content/themes/nvaccess2017/style.css?ver=3.0-1207024501' type='text/css' media='all' /> <link rel='stylesheet' id='wc-pb-checkout-blocks-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-product-bundles/assets/css/frontend/checkout-blocks.css?ver=7.1.2' type='text/css' media='all' /> <link rel='stylesheet' id='wc-bundle-style-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-product-bundles/assets/css/frontend/woocommerce.css?ver=7.1.2' type='text/css' media='all' /> <link rel='stylesheet' id='jetpack_css-css' href='https://www.nvaccess.org/wp-content/plugins/jetpack/css/jetpack.css?ver=13.5.1' type='text/css' media='all' /> <script type="text/javascript" src="https://www.nvaccess.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://www.nvaccess.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="wpmenucart-ajax-assist-js-extra"> /* <![CDATA[ */ var wpmenucart_ajax_assist = {"shop_plugin":"woocommerce","always_display":""}; /* ]]> */ </script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/plugins/woocommerce-menu-bar-cart/assets/js/wpmenucart-ajax-assist.min.js?ver=2.14.3" id="wpmenucart-ajax-assist-js"></script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.9.0.0" id="jquery-blockui-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="wc-add-to-cart-js-extra"> /* <![CDATA[ */ var wc_add_to_cart_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https:\/\/www.nvaccess.org\/cart\/","is_cart":"","cart_redirect_after_add":"yes"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=9.0.0" id="wc-add-to-cart-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.9.0.0" id="js-cookie-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" id="woocommerce-js-extra"> /* <![CDATA[ */ var woocommerce_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=9.0.0" id="woocommerce-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://stats.wp.com/s-202448.js" id="woocommerce-analytics-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/themes/nvaccess2017/js/site.js?ver=6.5.4" id="site-js"></script> <link rel="https://api.w.org/" href="https://www.nvaccess.org/wp-json/" /><link rel="alternate" type="application/json" href="https://www.nvaccess.org/wp-json/wp/v2/pages/23652" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.nvaccess.org/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.5.4" /> <meta name="generator" content="WooCommerce 9.0.0" /> <link rel="canonical" href="https://www.nvaccess.org/download/" /> <link rel='shortlink' href='https://www.nvaccess.org/?p=23652' /> <link rel="alternate" type="application/json+oembed" href="https://www.nvaccess.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.nvaccess.org%2Fdownload%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://www.nvaccess.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.nvaccess.org%2Fdownload%2F&format=xml" /> <style>img#wpstats{display:none}</style> <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="article" /> <meta property="og:title" content="Download NVDA" /> <meta property="og:url" content="https://www.nvaccess.org/download/" /> <meta property="og:description" content="Visit the post for more." /> <meta property="article:published_time" content="2017-07-05T08:11:37+00:00" /> <meta property="article:modified_time" content="2024-04-11T06:22:19+00:00" /> <meta property="og:site_name" content="NV Access" /> <meta property="og:image" content="https://s0.wp.com/i/blank.jpg" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:site" content="@nvAccess" /> <meta name="twitter:text:title" content="Download NVDA" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:description" content="Visit the post for more." /> <!-- End Jetpack Open Graph Tags --> </head> <body class="page-template page-template-page-download page-template-page-download-php page page-id-23652 fixed-nav theme-nvaccess2017 woocommerce-no-js download" > <nav class="primary"> <div class="container"> <div class="navbar"> <h1 class="logo"><a href="/"><img src="/images/logo.png" alt="NV Access Empowering lives through non-visual access to technology"></a></h1> <a href="/support-us/#donation-support" class="donate-btn">Donate</a> <input type="checkbox" id="menu"> <label for="menu" class="menu-btn"><img src="/images/menu-icon.png" alt=""></label> <ul id="menu-primary-menu" class="navbar__list main-navigation"><li id="menu-item-23664" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23664"><a href="/">Home</a></li> <li id="menu-item-23665" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-23665"><a href="/about-nv-access">About</a> <ul class="sub-menu"> <li id="menu-item-23666" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23666"><a href="/about-nv-access">About NV Access</a></li> <li id="menu-item-23667" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23667"><a href="/about-nvda">About NVDA</a></li> <li id="menu-item-23668" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23668"><a href="/testimonials">Testimonials</a></li> </ul> </li> <li id="menu-item-23669" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-23669"><a href="/download" aria-current="page">Download</a></li> <li id="menu-item-23670" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23670"><a href="/get-help">Get Help</a></li> <li id="menu-item-23671" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-23671"><a href="/corporate-government">Corporate / Government</a> <ul class="sub-menu"> <li id="menu-item-23757" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23757"><a href="/corporate-government">Corporate / Government Procurement and rollout</a></li> <li id="menu-item-23758" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23758"><a href="/services">Consulting / Development Services</a></li> </ul> </li> <li id="menu-item-27934" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-27934"><a href="https://www.nvaccess.org/category/in-process/">Blog</a> <ul class="sub-menu"> <li id="menu-item-23672" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23672"><a href="/news">News</a></li> </ul> </li> <li id="menu-item-23673" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23673"><a href="/support-us">Support Us</a></li> <li id="menu-item-23674" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23674"><a href="/shop">Shop</a></li> <li id="menu-item-30257" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-30257"><a href="https://www.nvaccess.org/my-account">Create Account / Log In</a></li> </ul> </div> </div> </nav> <div id="content" role="main"> <article> <header class="download header-title"> <div class="container"> <div class="about-header__title"> <h2><span role="presentation">Download </span> and experience <span role="presentation">NVDA today! </span></h2> </div> <!-- header title --> </div> </header> <div id="latest-build" class="download-version"> <div class="container"> <div class="row"> <div class="download-version__img"> <img src="https://www.nvaccess.org/wp-content/uploads/2019/06/NVDA-Product-Box-small.png" alt=""> </div> <div class="download-version__details section-title-v2"> <h2>NVDA version 2024.4.1</h2> <p>The NVDA screen reader can be downloaded free of charge by anyone. We do this because we believe everyone, especially the world鈥檚 poorest blind people deserve access to computers and a way out of poverty. If you have the means, no matter how big or small, please consider making a donation before downloading NVDA. We rely on donations and grants to continue improving NVDA and to ensure it remains compatible with the world鈥檚 rapidly changing technology.</p> <P> <STRONG>Please note: NVDA is only available for PCs running Microsoft Windows 8.1 and later.</STRONG> <UL> <LI>If you require a version of NVDA which can still run on Windows 7, please download the older <a href="https://www.nvaccess.org/download/?nvdaVersion=2023.3">NVDA 2023.3 for Windows 7</a> instead.</LI> <LI>If you require a version of NVDA which can still run on Windows XP or Vista, please download the much older <a href="https://www.nvaccess.org/download/?nvdaVersion=2017.3">NVDA 2017.3 for Windows XP</a> instead.</LI> </UL> <EM>NV Access does not recommend or support running these older versions on newer Operating systems.</EM> </p> </div> </div> <!-- row --> </div> <!-- container --> </div> <!-- download version --> <div class="download-donation section-title-v2"> <img src="/images/affordable.png" alt=""> <h2>Donation Options</h2> <p>If you wish to donate, you can make a secure payment by credit card or by PayPal account. Amounts are in Australian dollars (AUD). Australian donations over $2.00 are tax-deductible. </p> <div class="download-donation__option"> <form id="donateForm" data-paypal-itemName="Donation (for download of nvda 2024.4.1)" data-paypal-cbt="Continue to download" data-paypal-return="https://www.nvaccess.org/download/nvda/releases/2024.4.1/nvda_2024.4.1.exe" > <h3>I鈥檇 like to donate:</h3> <div class="amounts" role="group"> <fieldset class="download-donation__type"> <legend>One-off Donation</legend> <input id="amount_30" type="radio" name="amount" value="30.00" class="first-child" /> <label for="amount_30">$30</label> <input id="amount_50" type="radio" name="amount" value="50.00" /> <label for="amount_50">$50</label> <input id="amount_100" type="radio" name="amount" value="100.00" /> <label for="amount_100">$100</label> <input id="amount_250" type="radio" name="amount" value="250.00" /> <label for="amount_250">$250</label> <input id="amount_other" type="radio" name="amount" value="other" /> <label id="amount_other_label" for="amount_other">Other</label> <div id="other_amount_container" style="display:none"> <input id="amount_other_value" type="text" name="amount_other_value" size="7" aria-labelledby="amount_other_label" aria-describedby="amount_other_note" /> <small><label id="amount_other_note">($1 minimum)</label></small> </div> </fieldset> </div> <div class="amounts" role="group"> <fieldset class="download-donation__type"> <legend>Monthly Donation</legend> <input id="recurring_amount_5" type="radio" name="amount" value="5.00" class="first-child" /> <label for="recurring_amount_5">$5</label> <input id="recurring_amount_10" type="radio" name="amount" value="10.00" /> <label for="recurring_amount_10">$10</label> <input id="recurring_amount_20" type="radio" name="amount" value="20.00" /> <label for="recurring_amount_20">$20</label> <input id="recurring_amount_50" type="radio" name="amount" value="50.00" /> <label for="recurring_amount_50">$50</label> <input id="recurring_amount_other" type="radio" name="amount" value="other" /> <label id="recurring_amount_other_label" for="recurring_amount_other">Other</label> <div id="other_recurring_amount_container" style="display:none"> <input id="recurring_amount_other_value" type="text" name="recurring_amount_other_value" size="7" aria-labelledby="recurring_amount_other_label" aria-describedby="recurring_amount_other_note" /> <small><label id="recurring_amount_other_note">($1 minimum)</label></small> </div> </fieldset> </div> <fieldset class="download-donation__skip"> <legend>No Donation</legend> <input type="radio" checked="true" class="first-child" name="amount" value="0.00" id="no_amount"> <label for="no_amount">Skip donation this time</label> </fieldset> </div> </div> <div class="download-email-form"> <div class="download-email-form__container section-title-v2"> <div style="display:none"> <!-- email form currently hidden --> <h2>Receive news by Email</h2> <p>Want to stay up to date with the latest news at NV Access? Enter your email address below</p> <div> <form> <label for="download_email">Email address:</label><input type="email" id="download_email" /> </form> </div> </div> <button id="donateButton" class="orange">Download</button> </div> <!-- download-email --> </div> <!-- download-email__container--> </form> <div class="donation-eft section-title-v2"> <div class="donation-eft__container"> <h2>NVDA Productivity Bundle</h2> While downloading NVDA, take your skills to the next level with the “NVDA Productivity Bundle”. We’ve packaged all our popular training modules AND telephone support into one convenient package – and at a discount! <P> <div class="woocommerce "><ul class="products columns-4"> <li class="product type-product post-24033 status-publish first instock product_cat-uncategorized has-post-thumbnail sale featured downloadable virtual taxable purchasable product-type-bundle"> <a href="https://www.nvaccess.org/product/nvda-productivity-bundle/" class="woocommerce-LoopProduct-link woocommerce-loop-product__link"> <span class="onsale">Sale!</span> <img width="556" height="740" src="https://www.nvaccess.org/wp-content/uploads/2019/02/NVDA-Productivity-Bundle-2-556x740.jpg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="Cover image for product, which is purple with turquoise triangle top-left and orange triangle bottom-left, between them covering about a quarter of the cover. Title 'NVDA Productivity Bundle' in white on purple. NVDA logo top-right in white, NV Access logo lower-left in purple on orange. Sunburst designs around cover in lighter purple. Cover appears to be stacked on top of other product covers. Full description of NVDA and NV Access logos available on 'About NVDA' and 'About NV Access' pages on nvaccess.com" decoding="async" fetchpriority="high" /><h2 class="woocommerce-loop-product__title">NVDA Productivity Bundle</h2> <span class="price"><del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">AUD $</span>247.50</bdi></span></del> <span class="screen-reader-text">Original price was: AUD $247.50.</span><ins aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">AUD $</span>218.90</bdi></span></ins><span class="screen-reader-text">Current price is: AUD $218.90.</span></span> </a><a href="/download/?add-to-cart=24033" aria-describedby="woocommerce_loop_add_to_cart_link_describedby_24033" data-quantity="1" class="button product_type_bundle add_to_cart_button ajax_add_to_cart" data-product_id="24033" data-product_sku="" aria-label="Read more about “NVDA Productivity Bundle”" rel="nofollow">Add to cart</a><span id="woocommerce_loop_add_to_cart_link_describedby_24033" class="screen-reader-text"> </span> </li> </ul> </div> <P> Interested in Audio or Braille training? They’re also available in <a href="/shop/">The NV Access Shop</A>. </div> </div> <!-- download eft --> <div class="download-resources section-title-v2"> <div class="download-resources__container"> <h2>Learn more</h2> <ul> <li> <img src="/images/nvda-features.png" alt=""> <a href="/about-nvda/#features">NVDA features and system requirements</a> </li> <li> <img src="/images/whats-new.png" alt=""> <a target="_blank" href="https://www.nvaccess.org/files/nvda/releases/2024.4.1/documentation/changes.html">What鈥檚 New in this version of NVDA?</a> </li> <li> <img src="/images/learn-more.png" alt=""> <a target="_blank" href="/get-help/">Learn more about NV Access</a> </li> </ul> <P> <BR> <HR> <BR> <P> <H2>NVDA Community Resources</H2> NVDA has a vibrant user community around it. The following are compiled by NV Access and the community and provided as a resource to users. They are not officially endorsed by NV Access. For more links to community supported resources including popular NVDA email lists, please see the “Email support” heading below. <P> <UL> <li> <img src="/images/extra-voice.png" alt=""> <a target="_blank" href="https://github.com/nvaccess/nvda/wiki/ExtraVoices">Get extra voices for NVDA</a> </li> <li> <img src="/images/add-ons.png" alt=""> <a target="_blank" href="http://addons.nvda-project.org/">Get add-ons to enhance NVDA</a> </li> </UL> </div> <!-- container --> </div> <!-- download resources --> <div class="download-support section-title-v2"> <div class="container"> <div class="row"> <h2>Need support with your download?</h2> <li> <img src="/images/user-guide.png" alt=""> <h3>Free user guide</h3> <p>You can access the User Guide at any time under “Help” in the NVDA menu. Press either INSERT and the “N” key, or CAPS LOCK and the “N” key to open the NVDA menu. Alternatively, click on the NVDA icon in the task bar.</p> <a href="https://www.nvaccess.org/files/nvda/documentation/userGuide.html?">View user Guide</a></li> <li> <img src="/images/training-guides.png" alt=""> <h3>Training</h3> <p>Start with “Basic Training for NVDA”, available in electronic text, human-read audio or Braille. Move on to our Microsoft Office with NVDA modules, or bundle everything along with telephone support in the “NVDA Productivity Bundle”. Suitable for new or existing users wishing to improve proficiency.</p> <a href="/shop/">Explore Training Modules</a></li> <li> <img src="/images/email-support.png" alt=""> <h3>Email Support</h3> <p>There are a number of community-run email lists where NVDA users can answer each other鈥檚 questions. There are lists for various locations and languages available.</p> <a href="https://github.com/nvaccess/nvda/wiki/Connect">Find Out More</a> </li> <li> <img src="/images/user-guide.png" alt=""> <h3>NVDA Support</h3> <p>Purchase support for NVDA, and get the help you need when you need it via the phone or your preferred online option (eg Google meet, Skype or Zoom). Our experts can answer questions, walk you through completing a task or even resolve an issue for you by remotely accessing your computer.</p> <a href="/product/nvda-telephone-support/">Find Out More</a> </li> </div> <!-- row --> </div> <!-- container --> </div> <!-- download support --> </article> </div> <footer> <div class="container footer"> <div class="row footer-widgets"> <div id="text-4" class="footer__col widget_text"> <div class="acnc-tick-narrow"> <a href="https://www.acnc.gov.au/charity/charities/3e3e23ea-38af-e811-a961-000d3ad24182/profile"> <img src="/images/acnc-tick.png" alt="ACNC registered charity tick"> </a> </div><h3 class="footer__title">About Us</h3> <div class="textwidget"><p>NV Access is a registered charity and software development company.</p> <p>We are the creators of NVDA, a free, open source, globally accessible screen reader for the blind and vision impaired.</p> </div> </div> <div class="acnc-tick-wide footer__col widget_text"> <a href="https://www.acnc.gov.au/charity/charities/3e3e23ea-38af-e811-a961-000d3ad24182/profile"> <img src="/images/acnc-tick.png" alt="ACNC registered charity tick"> </a> </div> <div id="recent-posts-2" class="footer__col widget_recent_entries"> <h3 class="footer__title">Recent Posts</h3> <ul> <li> <a href="https://www.nvaccess.org/post/in-process-15th-november-2024/">In-Process 15th November 2024</a> </li> <li> <a href="https://www.nvaccess.org/post/nvda-2024-4-1rc1/">NVDA 2024.4.1rc1 available for testing</a> </li> <li> <a href="https://www.nvaccess.org/post/nvda-2024-4-1/">NVDA 2024.4.1 Released</a> </li> <li> <a href="https://www.nvaccess.org/post/in-process-31st-october-2024/">In-Process 31st October 2024</a> </li> <li> <a href="https://www.nvaccess.org/post/nvda-2024-4/">NVDA 2024.4 Released</a> </li> </ul> </div><div id="text-5" class="footer__col widget_text"><h3 class="footer__title">@NVAccess on Mastodon</h3> <div class="textwidget"> <script> window.addEventListener("load", () => { mastodonFeedLoad( "https://fosstodon.org/api/v1/accounts/109311036687677246/statuses?limit=1&exclude_replies=true", "include-mastodon-feed-674701468fb68", { linkTarget: "_self", showPreviewCards: true, excludeConversationStarters: false, text: { boosted: "boosted 馃殌", noStatuses: "No statuses availablae", viewOnInstance: "view on instance", showContent: "Show content", permalinkPre: "on", permalinkPost: "", edited: "(edited)", }, localization: { date: { locale: "en-US", options: {}, } } } ); }); </script> <div class="include-mastodon-feed" id="include-mastodon-feed-674701468fb68">Loading Mastodon feed...</div> </div> </div><div id="nav_menu-2" class="footer__col widget_nav_menu"><h3 class="footer__title">Useful Links</h3><div class="menu-footer-menu-container"><ul id="menu-footer-menu" class="menu"><li id="menu-item-23675" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23675"><a href="/my-account">My Account</a></li> <li id="menu-item-23676" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23676"><a href="/contact-us">Contact Us</a></li> <li id="menu-item-23677" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23677"><a href="/support-us">Donate</a></li> <li id="menu-item-23678" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23678"><a href="https://github.com/nvaccess/nvda/">Github</a></li> <li id="menu-item-23679" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-23679"><a href="/privacy">Privacy</a></li> <li id="menu-item-24439" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-24439"><a href="https://www.nvaccess.org/partners/">Partners</a></li> <li id="menu-item-24773" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-24773"><a href="https://www.nvaccess.org/category/news/releases/">Releases</a></li> <li id="menu-item-24951" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-24951"><a href="https://www.nvaccess.org/category/careers/">Careers</a></li> </ul></div></div> </div> </div> <div class="row footer-bottom-bar"> 漏 2024 NV Access Limited. All rights reserved. ABN 96 149 271 036 </div> </footer> <script> const mastodonFeedCreateElement = function(type, className = null) { let element = document.createElement(type); if(null !== className) { element.className = className; } return element; } const mastodonFeedCreateElementAccountLink = function(account) { let accountLinkElem = mastodonFeedCreateElement('a'); accountLinkElem.href = account.url; let accountImageElem = mastodonFeedCreateElement('img', 'avatar'); accountImageElem.src = account.avatar_static; accountLinkElem.addEventListener('mouseover', (event) => { accountLinkElem.querySelector('.avatar').src = account.avatar; }); accountLinkElem.addEventListener('mouseout', (event) => { accountLinkElem.querySelector('.avatar').src = account.avatar_static; }); accountLinkElem.appendChild(accountImageElem); // inject emojis let displayName = account.display_name; if(account.emojis.length > 0) { account.emojis.forEach(function(emoji) { displayName = mastodonFeedInjectEmoji(displayName, emoji); }); } accountLinkElem.innerHTML += ' ' + displayName; return accountLinkElem; } const mastodonFeedCreateElementPermalink = function(status, label) { let linkElem = mastodonFeedCreateElement('a'); linkElem.href = status.url; linkElem.appendChild(document.createTextNode(label)); return linkElem; } const mastodonFeedCreateElementMediaAttachments = function(status, options) { let attachments = status.media_attachments; let mediaWrapperElem = mastodonFeedCreateElement('div', 'media'); for(let mediaIndex = 0; mediaIndex < attachments.length; mediaIndex++) { let media = attachments[mediaIndex]; let mediaElem = mastodonFeedCreateElement('div', media.type); if('image' == media.type) { let mediaElemImgLink = mastodonFeedCreateElement('a'); mediaElemImgLink.href = status.url; if(null === media.remote_url) { mediaElemImgLink.style.backgroundImage = 'url("' + media.preview_url + '")'; } else { mediaElemImgLink.style.backgroundImage = 'url("' + media.remote_url + '")'; } if(null !== media.description) { mediaElem.title = media.description; } mediaElem.appendChild(mediaElemImgLink); } else if('gifv' == media.type) { let mediaElemGifvLink = mastodonFeedCreateElement('a'); mediaElemGifvLink.href = status.url; let mediaElemGifv = mastodonFeedCreateElement('video', 'requiresInteraction'); if(null === media.remote_url) { mediaElemGifv.src = media.url; } else { mediaElemGifv.src = media.remote_url; } mediaElemGifv.loop = true; mediaElemGifv.muted = 'muted'; if(null !== media.description) { mediaElemGifv.title = media.description; } mediaElemGifvLink.appendChild(mediaElemGifv); mediaElem.appendChild(mediaElemGifvLink); mediaElemGifv.addEventListener('mouseover', (event) => { mediaElemGifv.play(); }); mediaElemGifv.addEventListener('mouseout', (event) => { mediaElemGifv.pause(); mediaElemGifv.currentTime = 0; }); } else { // TODO implement support for other media types // currently only image and gifv support implemented mediaElem.innerHTML = 'Stripped ' + media.type + ' - only available on instance<br />'; let permalinkElem = mastodonFeedCreateElement('span', 'permalink'); permalinkElem.appendChild(mastodonFeedCreateElementPermalink(status, options.text.viewOnInstance)); mediaElem.appendChild(permalinkElem); } mediaWrapperElem.appendChild(mediaElem); } return mediaWrapperElem; } const mastodonFeedCreateElementPreviewCard = function(card) { let cardElem = mastodonFeedCreateElement('div', 'card'); if(null === card.html || card.html.length < 1) { let cardElemMeta = mastodonFeedCreateElement('div', 'meta'); if(null !== card.image) { let cardElemImageWrapper = mastodonFeedCreateElement('div', 'image'); let cardElemImage = mastodonFeedCreateElement('img'); cardElemImage.src = card.image; cardElemImageWrapper.appendChild(cardElemImage); cardElemMeta.appendChild(cardElemImageWrapper); } let cardElemTitle = mastodonFeedCreateElement('div', 'title'); cardElemTitle.innerHTML = card.title; cardElemMeta.appendChild(cardElemTitle); let cardElemDescription = mastodonFeedCreateElement('div', 'description'); cardElemDescription.innerHTML = card.description; cardElemMeta.appendChild(cardElemDescription); if(card.url === null) { cardElem.appendChild(cardElemMeta); } else { let cardElemLink = mastodonFeedCreateElement('a'); cardElemLink.href = card.url; cardElemLink.appendChild(cardElemMeta); cardElem.appendChild(cardElemLink); } } else { cardElem.innerHTML = card.html; } return cardElem; } const mastodonFeedCreateElementTimeinfo = function(status, options, url = false) { let createdInfo = mastodonFeedCreateElement('span', 'permalink'); createdInfo.innerHTML = ' ' + options.text.permalinkPre + ' '; if(false === url) { createdInfo.innerHTML += new Date(status.created_at).toLocaleString(options.localization.date.locale, options.localization.date.options); } else { createdInfo.appendChild(mastodonFeedCreateElementPermalink(status, new Date(status.created_at).toLocaleString(options.localization.date.locale, options.localization.date.options))); } createdInfo.innerHTML += ' ' + options.text.permalinkPost + ' '; if(null !== status.edited_at) { createdInfo.innerHTML += ' ' + options.text.edited; } return createdInfo; } const mastodonFeedInjectEmoji = function(string, emoji) { return string.replace(':' + emoji.shortcode + ':', '<img class="emoji" src="' + emoji.url + '" title="' + emoji.shortcode + '" />'); } const mastodonFeedRenderStatuses = function(statuses, rootElem, options) { if(statuses.length < 1) { console.log(options); rootElem.innerHTML = options.text.noStatuses; } else { for(let i = 0; i < statuses.length; i++) { let status = statuses[i]; let isEdited = (null === status.edited_at ? true : false); let isReblog = (null === status.reblog ? false : true); let statusElem = mastodonFeedCreateElement('div', 'status'); // add account meta info let accountElem = mastodonFeedCreateElement('div', 'account'); if(isReblog) { let boosterElem = mastodonFeedCreateElement('span', 'booster'); boosterElem.appendChild(document.createTextNode( options.text.boosted )); accountElem.appendChild(boosterElem); } accountElem.appendChild(mastodonFeedCreateElementAccountLink(status.account)); accountElem.appendChild(mastodonFeedCreateElementTimeinfo(status, options, (isReblog ? false : status.url))); statusElem.appendChild(accountElem); // prepare content rendering let showStatus = status; if(isReblog) { showStatus = status.reblog; } let contentWrapperElem = mastodonFeedCreateElement('div', 'contentWrapper' + (isReblog ? ' boosted' : '')); // add boosted post meta info if(isReblog) { let boostElem = mastodonFeedCreateElement('div', 'account'); let boostAccountLink = mastodonFeedCreateElementAccountLink(showStatus.account); boostElem.appendChild(boostAccountLink); boostElem.appendChild(mastodonFeedCreateElementTimeinfo(showStatus, options, showStatus.url)); contentWrapperElem.appendChild(boostElem); } let contentElem = mastodonFeedCreateElement('div', 'content'); // handle content warnings if(showStatus.sensitive || showStatus.spoiler_text.length > 0) { let cwElem = mastodonFeedCreateElement('div', 'contentWarning'); if(showStatus.spoiler_text.length > 0) { let cwTitleElem = mastodonFeedCreateElement('div', 'title'); cwTitleElem.innerHTML = showStatus.spoiler_text; cwElem.appendChild(cwTitleElem); } let cwLinkElem = mastodonFeedCreateElement('a'); cwLinkElem.href = '#'; cwLinkElem.onclick = function() { this.parentElement.style = 'display: none;'; this.parentElement.nextSibling.style = 'display: block;'; return false; } cwLinkElem.innerHTML = options.text.showContent; cwElem.appendChild(cwLinkElem); contentWrapperElem.appendChild(cwElem); contentElem.style = 'display: none;'; } // add regular content let renderContent = showStatus.content; // inject emojis if(showStatus.emojis.length > 0) { showStatus.emojis.forEach(function(emoji) { renderContent = mastodonFeedInjectEmoji(renderContent, emoji); }); } contentElem.innerHTML += renderContent; // handle media attachments if(showStatus.media_attachments.length > 0) { let mediaAttachmentsElem = mastodonFeedCreateElementMediaAttachments(showStatus, options); contentElem.appendChild(mediaAttachmentsElem); } // handle preview card if(options.showPreviewCards && showStatus.card != null) { let cardElem = mastodonFeedCreateElementPreviewCard(showStatus.card); contentElem.appendChild(cardElem); } contentWrapperElem.appendChild(contentElem); statusElem.appendChild(contentWrapperElem); rootElem.appendChild(statusElem); } } if('_self' != options.linkTarget) { rootElem.querySelectorAll('a').forEach(function(e) { e.target = options.linkTarget; }); } } const mastodonFeedLoad = function(url, elementId, options) { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'json'; xhr.onload = function() { const statuses = xhr.response; const rootElem = document.getElementById(elementId); rootElem.innerHTML = ''; if (xhr.status === 200) { if(options.excludeConversationStarters && statuses.length > 0) { const filteredStatuses = []; for(let i = 0; i < statuses.length; i++) { let includeStatus = true; if(statuses[i].mentions.length > 0) { const statusContent = document.createElement('div'); statusContent.innerHTML = statuses[i].content; const mentionUsername = statuses[i].mentions[0].acct.split('@')[0]; const plainTextContent = statusContent.textContent || statusContent.innerText; if(plainTextContent.substring(1, ('@' + mentionUsername).length) == mentionUsername) { includeStatus = false; } } if(includeStatus) { filteredStatuses.push(statuses[i]); } } mastodonFeedRenderStatuses(filteredStatuses, rootElem, options); } else { mastodonFeedRenderStatuses(statuses, rootElem, options); } } else { rootElem.appendChild(document.createTextNode(xhr.response.error)); } }; xhr.send(); } </script> <script type='text/javascript'> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <link rel='stylesheet' id='woocommercebulkdiscount-style-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce-bulk-discount/css/style.css?ver=6.5.4' type='text/css' media='all' /> <link rel='stylesheet' id='wc-blocks-style-css' href='https://www.nvaccess.org/wp-content/plugins/woocommerce/assets/client/blocks/wc-blocks.css?ver=wc-9.0.0' type='text/css' media='all' /> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/themes/nvaccess2017/js/a11yFixes.js?ver=1.0" id="a11yFixes-js"></script> <script type="text/javascript" src="https://stats.wp.com/e-202448.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"52250462\",\"post\":\"23652\",\"tz\":\"10\",\"srv\":\"www.nvaccess.org\",\"j\":\"1:13.5.1\"}") ]); _stq.push([ "clickTrackerInit", "52250462", "23652" ]); /* ]]> */ </script> <script type="text/javascript" src="https://www.nvaccess.org/wp-content/themes/nvaccess2017/js/donate.js?ver=1.3" id="donate-js"></script> </body> </html>