<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <title>HTML5 - Part 3: Video of Testing and Debugging JavaScript in HTML5 Applications</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="A screencast that demonstrates how to use the IDE to 
              work with the JavaScript editor and debugger in an HTML5 application.">
        <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
    </head>
    <body>

<!--
Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-->

        <h1>HTML5 - Part 3: Video of Testing and Debugging JavaScript in HTML5 Applications</h1>

        <table>
            <tr>
                <td class="valign-top">

                    <p>This screencast introduces the support provided by NetBeans IDE
                    for developing HTML5 applications.
                    The screencast demonstrates how to use the IDE to debug and test JavaScript files.
                    </p>
                    
                    <p>Author: Ken Ganfield<br>Time: 6:54</p>

                    <p><a href="http://bits.netbeans.org/media/html5-jsdebug-screencast.mp4">Download / Watch full size</a> (33 MB)</p>


                    
                </td>

                <td width="486" class="valign-top align-center">

                   
                    <script src="/images_www/js/mediaplayer-5.9/jwplayer.js" type="text/javascript"></script>                   
    <div id="player" >
        <center>
	    <div id="flashContent"></div>
        </center>
    </div>
    <script type="text/javascript">
	$(function(){
	    var targetFile='http://bits.netbeans.org/media/html5-jsdebug-screencast.mp4';
		jwplayer('flashContent').setup({
	                'id': 'flashContentId',
	                'width': '530',
	                'height': '340',
	                'autostart': 'true',
	                'file': targetFile,
	                'controlbar':{position:'bottom'},
	                'modes': [
	                      {type: 'html5'},
	                      {type: 'flash', src: '/images_www/js/mediaplayer-5.9/player.swf'},
	                      {type: 'download'}
	                         ]
	           });	
	});
    </script>


                    </td>
            </tr>
            
            <tr>
                <td colspan="2">
                    <p>For more about working with HTML5 applications in NetBeans IDE, watch the following screencasts.</p>
                    <ul>
                        <li><a href="html5-gettingstarted-screencast.html"> HTML5 - Part 1: Getting Started with HTML5 Applications</a></li>
                        <li><a href="html5-css-screencast.html"> HTML5 - Part 2: Working with CSS Style Sheets in HTML5 Applications</a></li>
                    </ul>
                    
                    <br style="clear:both;">
                    <div class="feedback-box">
                        <a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Video%20of%20Testing%20and%20Debugging%20JavaScript%20in%20HTML5%20Applications">Send Feedback on This Tutorial</a>
                    </div>
                    <br style="clear:both;">
                </td>
            </tr>
        </table>
        <h2>Related links</h2>

        <ul>
            <li>Demo:<a href="html5-gettingstarted-screencast.html"> HTML5 - Part 1: Getting Started with HTML5 Applications</a></li>
            <li>Demo:<a href="html5-css-screencast.html"> HTML5 - Part 2: Working with CSS Style Sheets in HTML5 Applications</a></li>
            <li><a href="../webclient/html5-gettingstarted.html">Getting Started with HTML5 Applications </a></li>
            <li><a href="../webclient/html5-editing-css.html">Working with CSS Style Sheets in HTML5 Applications</a></li>
            <li><a href="../webclient/html5-js-support.html">Debugging and Testing JavaScript in HTML5 Applications</a></li>
            <li><a href="http://wiki.netbeans.org/HTML5">HTML5 Support in NetBeans IDE wiki page</a></li>
            <li><a href="../../trails/php.html">PHP and HTML5 Learning Trail</a></li>
        </ul>

    </body>
</html>
