// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= HTML5 - 第 3 部分：在 HTML5 应用程序中测试和调试 JavaScript 的视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: HTML5 - 第 3 部分：在 HTML5 应用程序中测试和调试 JavaScript 的视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, HTML5 - 第 3 部分：在 HTML5 应用程序中测试和调试 JavaScript 的视频

|===
|此截屏视频介绍了 NetBeans IDE 提供的 HTML5 应用程序开发支持。此截屏视频演示如何使用 IDE 调试和测试 JavaScript 文件。

作者：Ken Ganfield
播放时长：6:54

link:http://bits.netbeans.org/media/html5-jsdebug-screencast.mp4[+下载/观看全图+] (33 MB)

 

|有关在 NetBeans IDE 中使用 HTML5 应用程序的更多信息，请观看以下截屏视频。

* link:html5-gettingstarted-screencast.html[+ HTML5 - 第 1 部分：HTML5 应用程序入门+]
* link:html5-css-screencast.html[+ HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS 样式表+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20Testing%20and%20Debugging%20JavaScript%20in%20HTML5%20Applications[+发送有关此教程的反馈意见+]
 
|===


== 相关链接

* 演示：link:html5-gettingstarted-screencast.html[+HTML5 - 第 1 部分：HTML5 应用程序入门指南+]
* 演示：link:html5-css-screencast.html[+HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS 样式表+]
* link:../webclient/html5-gettingstarted.html[+HTML5 应用程序入门 +]
* link:../webclient/html5-editing-css.html[+在 HTML5 应用程序中使用 CSS 样式表+]
* link:../webclient/html5-js-support.html[+在 HTML5 应用程序中调试和测试 JavaScript+]
* link:http://wiki.netbeans.org/HTML5[+NetBeans IDE 中的 HTML5 支持 Wiki 页+]
* link:../../trails/php.html[+PHP 和 HTML5 学习资源+]
