精华内容
下载资源
问答
  • 这一切,几乎HTML5技术推动,当然,JavaScript 这个语言最大的功臣。 基于 HTML5 的跨平台技术比较出名的有 PhoneGap、Cordova,常常用于开发 webapp;还有 Egret、Cocos-creator、Unity 等,
  • HTML语言的发展

    2006-10-26 16:22:00
    一、什么是HTML? 网页的学名称作HTML文件,一种可以在www网上传输,并被浏览器认识和翻译成页面显示出来的文件。www“world wide web"的缩写;HTML的意思则... 网页就是HTML语言编写出来的。 HTM...
     一、什么是HTML?
        网页的学名称作HTML文件,是一种可以在www网上传输,并被浏览器认识和翻译成页面显示出来的文件。www是“world wide web"的缩写;HTML的意思则是"Hypertext Markup Language",中文翻译为“超文本标记语言”。“超文本”就是指页面内可以包含图片,联接,甚至音乐,程序等非文字的元素。
      网页就是由HTML语言编写出来的。
      HTML语言只是一种排版语言,语法就类似于这样:"页高8宽5,(1,2)处插入高1宽1的图片A..."
      HTML语言发展很快,已经历经HTML1.0,HTML2.0和HTML3.0,html4.0多个版本,现在html5.0正在测试同时DHTML (动态),VHTML(虚拟),SHTML等也飞速发展。我们现在一般只要掌握HTML4.0就可以了。
       
        二、什么是动态 HTML(DHTML) ?
        动态HTML是一组技术,是一种新的思想方法,它被设计用来创造和显示更多的交互性网页,包括动态样式,动态内容,2D布局,数据捆梆和多媒体效果等等。
        动态HTML (DHTML) 是一门令人兴奋的新技术,它完全克服了传统 HTML 的不足,极具发展前景。DHTML使用一个文件对象模型 (DOM) 来扩充 HTML 语言,使得 WEB 页面的所有元素及其属性都可以实时存取, 从而允许你使用脚本动态地修改页面元素,而这些都不需要 WEB 服务器的干预。使用 DHTML 完全能够设计出复杂的,动态的,交互式的 WEB 页面,使我们的WEB 页面将因此而变得更为生动和精彩。DHTML目前正在发展中,尚没有形成一个标准。Microsoft 和 Netscape 两大公司对 DHTML 各有自己的看法,尽管两大公司都使用了很多相同的技术术语,并引用相同的已发表和提议的标准集合,但在具体实现中,两者不能统一。Netscape 是增加一些新的标记(主要是Layer, Ilayer等),而 Microsoft 是对现有的标记增加一些新的属性。由此引起的问题是在Internet Explorer上正常运行的动态网页,在 Netscape 上可能会不正确运行;反之亦然。W3C 目前正在努力开发一种标准使它能与所有的平台和浏览器兼容。
       
       
    三、什么是HTTP?
        Hypertext Transfer Protocol, WWW服务程序所用的协议。我们在用浏览器浏览网页时,使用的就是这个协议,所以在地址栏中都要输入HTTP://……。

        四、什么是FTP?
        FTP是File Transfer Protocol(文件传输协议)的缩写。它是一种在UNIX类操作系统上使用的协议,现在已经被纳入TCP/IP协议中,被广泛的应用在Internet上。它的传输方式一般分为ASCII和BIN(二进制)两种。我们在说到Internet上的FTP时,通常是指一些使用FTP协议的站点和FTP的传输方式。

        五、上传主页有哪几种方式?E-Mail方式维护主页是什么意思?
        通常我们上传主页的方式是由提供主页空间的ICP来决定了。一般的上传方式有FTP、HTTP、和E-Mail三种。FTP是文件传输协议的英文缩写,光看字面意思,我们就应该知道传输文件是它的拿手好戏。好戏。HTTP方式是利用浏览器与服务器链接,向服务器端发送文件。E-Mail方式是指在维护主页的时候将要更新的内容用压缩软件压缩打包,用E-Mail发给主页空间所在网站的WebMaster。再由WebMaster将主页内容解压打开,完成更新工作。这三种上传的方式中,FTP以它的快速和良好的交互性,得到了大家的公认和推崇,现在已经是最流行的上传和下载方式了。而E-Mail上传方式的优点是安全性极高,不易被黑客乘虚而入。但是由于交互性和灵活性太差,已经很少使用了。   
       
        六、什么是CGI?
        CGI 意思为 Common Gateway Interface,公共网关接口,一种基于浏览器的输入、在Web服务器上运行的程序方法。 CGI脚本 使你的浏览器与用户能交互,为了在数据库中寻找一个名词, 提供你写入的评论,或者从一个表单中选择几个条目并且能得到一个明确的回答. 如果你曾经遇到过在web上填表或进行搜索, 你就是用的CGI脚本。你那时也许没有意识到,因为大部分工作是在服务器上运行的,你看到的只是结果。作为一个网页设计者,你创建客户端的 CGI脚本,服务器端的程序用来处理用户输入,结果返回给用户。 

        七、什么是ASP?
        Microsoft Active Server Pages 即我们所称的 ASP ,其实是一套微软开发的服务器端脚本环境, ASP 内含于 IIS 3.0 和 4.0 之中 , 通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。有了 ASP 你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。 以下罗列了 Active Server Pages 所独具的一些特点:
      1. 使用 VBScript 、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。
      2. 无须 compile 编译,容易编写,可在服务器端直接执行。
      3. 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。
      4. 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
      5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript 或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件。
      6.Active Server Pages 的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
      7. 可使用服务器端的脚本来产生客户端的脚本。
      8. 物件导向( Object-oriented )。
      9.ActiveX Server Components(ActiveX 服务器元件) 具有无限可扩充性。可以使用Visual Basic 、 Java、Visual C++ 、COBOL等编程语言来编写你所需要的 ActiveX Server Component 。
        
      
    八、JavaScript是什么?Java和JavaScript是一样的吗?
      JavaScript是一种新的描述语言,此一语言可以被嵌入HTML的文件之中。透过JavaScript可以做到回应使用者的需求事件(如form的输入)而不用任何的网络来回传输资料。所以当一位使用者输入一项资料时,它不用经过传给服务器端(server)处理,再传回来的过程,而直接可以被客户端(client)的应用程序所处理,你也可以想像成有一个可执行程式在你的客端上执行一样。javascript虽然效果不错,但它在网络上的效果奇慢。
      在JavaScript上,JavaScript和Java 很类似,但到底并不一样。Java是一种比JavaScript更复杂许多的程序语言。而JavaScript则是相当容易了解的语言,JavaScript创作者可以不那么注重程序技巧。所以许多Java的特性在JavaScript中并不支持。
       
        九、常用的WEB图像格式有哪些?
        1、PNG(Portable Network Graphic)
        PNG格式是WEB图像中最通用的格式。它是一种无损压缩格式,但是如果没有插件支持,有的浏览器可能不支持这种格式。PNG格式最多可以支持32位颜色,但是不支持动画图。
        2、GIF(Graphics Interchange Format)
        GIF是Web上最常用的图像格式,它可以用来存储各种图像文件。特别适用于存储线条、图标和电脑生成的图像、卡通和其它有大色块的图像。GIF文件非常小,它形成的是一种压缩的8位图像文件,所以最多只支持256种不同的颜色。Gif支持动态图、透明图和交织图。
        3、BMP(Windows Bitmap)
        BMP格式使用的是索引色彩,它的图像具有极其丰富的色彩,可以使用16M色彩渲染图像。此格式一般用在多媒体演示和视频输出等情况下。
        4、TIFF(Tag Inage File Format)
        TIFF格式是对色彩通道图像来说最有用的格式,支持24个通道,能存储多于4个通道。TIFF格式的结果要比其它格式更大、更复杂,它非常适合于印刷和输出。
        5、JPEG(Joint Photographic Experts Group)
        JPEG是Web上仅次于GIF的常用图像格式。JPEG是一种压缩得非常紧凑的格式,专门用于不含大色块的图像。JPEG的图像有一定的失真度,但是在正常的损失下肉眼分辨不出JPEG和GIF图像的差别。,而JPEG文件只有GIF文件的1/4大小。JPEG对图标之类的含大色块的图像不很有效,不支持透明图和动态图。
        6、TGA(Targa)
        TGA格式与TIFF格式相同,都可以用来处理高质量的色彩通道图形。
        另外,PDD、PSD格式也是存储包括通道的RGB图像的最常见的文件格式。

    转载于:https://www.cnblogs.com/csky2002/archive/2006/10/26/540930.html

    展开全文
  • Web入门

    2018-03-28 20:30:29
     HTML用于编写网页,平时上网通过浏览器我们看到的大部分页面是由HTML编写的,网页 内容包括:HTML代码,css代码,javaScript代码等内容.其中HTML:结构化标准,css:网页的样式,H javaScript:行为化标准. 一.HTML的...

    什么是HTML?

    HTML:英文全称:Hyper Text Markup Language    超文本标记语言

           HTML用于编写网页,平时上网通过浏览器我们看到的大部分页面都是由HTML编写的,网页

    内容包括:HTML代码,css代码,javaScript代码等内容.其中HTML:结构化标准,css:网页的样式,H

    javaScript:行为化标准.

    一.HTML的规范:

    1.HTML文件都是以.HTML或htm结尾的,建议用.html.

    2.HTML文件分为头部分<head></head>和体部分<body></body>.

    3.HTML标签都是有开始和结束标签组成.

    4.HTML标签忽略大小写.

    二.HTML的几个重要标签

    1.标题标签:从<h1>到<h6>逐渐变小

    2.水平线标签:<hr/>

    3.段落标签:   <p>

    4.字体标签:<font  属性=值>内容</font>  color:字体颜色   size:字体大小   face:设置字体

    5.跨行跨列: 跨行:rowspan    跨列:colspan

    三.操作步骤

    1.创建一个HTML文件

    2.创建一个标题标签显示网页标题

    3.在体部分应用各种标签完成网页制作要求

    4.对代码进行完善

    div+css布局

    一.什么是div?

          div就是HTML一个普通标签,进行区域划分.独占一行,必须结合CSS才能实现复杂效果.div是块级元素.

    二.什么是css?

             css指层叠样式表,样式指的是给HTML标签添加需要显示的效果.层叠是使用不同的添加方式,给同一个

          HTML标签添加样式最后所有的样式都叠加到一起,共同作用在某个标签上.

     三.  css样式规则

             1. 选择器{属性1:属性值;属性2:属性值:...}----选择器指css样式作用的HTML对象,花括号内是对该对象设置的具体样式.

              2.css样式选择器区分大小写,属性和属性值不区分.

              3.如果属性值由多个单词组成且包含空格,必须为这个属性值加上英文属性的引号.

    四.css样式

             1. 行内样式:通过标签的style属性来设置元素的样式,这样做没有做到结构与样式的分离,很少使用.

             2.内部样式: 又称内嵌式,是将css代码当到HTML文档的<head>头部标签体中,并且使用<style>标签定义.css样式只对,

        其所在的HTML页面有效,设计网站时不建议使用这种样式,因为它不能充分发挥css代码的重用优势.

              3.外部样式: 又称链入式,是将所有的样式放在一个或多个以.css为扩展名的外部样式表文件中,通过<link>标签将样式连接到HTML文档中

    链入式最大的好处是同一个css样式表可以被不同的HTML页面链接使用,同时一个HTML页面也可以通过多个<link/>标记链接多个css样表.

     

     

     

    展开全文
  • web前端基础

    2018-11-11 09:58:44
    web前端主要指的是客户端UI,各大浏览器内容都是由前端编写。 前端主要包括页面制作和页面逻辑开发两大内容。其中页面逻辑开发要掌握DOM,JS,CSS,Html,PS技术。 HTML:是一种超文本标记文档,不是一种编程...

    web前端主要指的是客户端UI,各大浏览器内容都是由前端编写。

    前端主要包括页面制作和页面逻辑开发两大内容。其中页面逻辑开发要掌握DOM,JS,CSS,Html,PS技术。

    HTML:是一种超文本标记文档,不是一种编程语言,是静态的,“超”表示超链接。简单的说,html就是用来告诉用户,这是一个标题,这是一张图片。所以她展示了页面结构,用来标明这是个什么东西,而不是控制它长成什么样子。但需要注意的是它有其逻辑意义而不仅仅是外观表象。比如说不能在主标题前插入一个段落。

    CSS:HTML是定义了页面结构,那么CSS就是美化界面了,及它定义了样式。

    JS:JS是一门正儿八经的程序设计语言,其不仅可以编写前端,后端也同样适用,它是动态的脚本语言,也是一种解释性语言,可以放在浏览器中运行。HTML,CSS都只实现了其外观,直接的说就是一个空架子,那么JS就是给了其活力,它用于实现动作的交互处理。没有JS时,网页上的登录按钮只是一个摆设,但是加上JS,就能实现弹出一个页面并进行相关操作了。

    其他相关完善,等待更深一步学习。

    展开全文
  • TopFisher新一代的WEB数据采集系统,只要有网址的页面,TopFisher都能从该页面中精确的采集您想要的数据,并按照用户指定的表结构把数据保存到本地或远程的数据库中,数据可以直接被采集为文本/数字/日期等各种...
  • 什么是JavaScript引擎

    千次阅读 2015-07-23 22:58:59
    JavaScript是由Netscape开发的对象脚本语言,其特点是开发简单、功能灵活,目前已广泛应用于WEB页面及服务器应用程序中。HTML本身是静态的、不允许用户干预,但用JavaScript编写的脚本程序就可以在用户的浏览器端...

    JavaScript是由Netscape开发的对象脚本语言,其特点是开发简单、功能灵活,目前已广泛应用于WEB页面及服务器应用程序中。HTML本身是静态的、不允许用户干预,但用JavaScript编写的脚本程序就可以在用户的浏览器端运行,可以同用户进行交互,从而实现动态页面。可以将JavaScript与嵌入WEB的大多数对象的事件(如鼠标点击、移动等)相关联,然后用自己的方式处理这些事件。JavaScript提供了丰富的内置函数及命令,能在浏览器中显示HTML、数值计算、多媒体播放、超级链接以及简单的交互窗口等,还可以使在浏览器中运行的小Java应用程序的性质改变从而很容易地改变控件或其它对象的行为而不必深入研究其本身的结构。

    JavaScript虽然是为Internet而开发的,但它的应用却不仅仅局限于Internet,事实上由于其面向对象的特性使得其适用范围非常广泛,只要我们的应用程序具有良好的对象机制,我们就可以借用JavaScript,从而实现很好的交互功能。

    SpiderMonkey是由C语言操作的JavaScript引擎,它支持JS1.4和ECMAScript-262规范。该引擎分析、编译和执行脚本,根据JS数据类型和对象的需要进行内存分配及释放操作。利用该引擎可以让你的应用程序具有解释JavaScript脚本的能力,目前已有若干个项目都采用了SpiderMonkey引擎,像K-3D、WebCrossing、WebMerger等。K-3D是用C++实现的3D建模与仿真系统,该系统内嵌SpiderMonkey引擎来提供自定义脚本(用户创建脚本生成像齿轮一样具有重复特性的复杂形体),也可用来驱动交互式的教学系统(用户可以使用一段JS脚本程序记录其交互过程,如移动鼠标、选择菜单、点击鼠标等)。WebCrossing利用SpiderMonkey实现了服务器端的脚本环境,提供了完全的Web-server脚本环境,服务器端的实现允许你在内置的、面向对象的数据库中创建永久对象,这样即可根据自己的需要扩展服务器环境。

    下面简要介绍在自己的应用程序中如何使用SpiderMonkey,最后给出一个简单的例子程序。

    如何使用引擎

    JS引擎一般作为共享库使用,应用程序调用引擎提供的API函数。引擎API函数大致分为以下几种:数据类型操作、RunTime控制、类与对象的创建和维护、函数与脚本执行、字符串操作、错误处理、安全控制、Debug支持。 一般情况下,在你的应用程序中只需使用某几类函数。例如,在进行JS调用之前你必须调用JS_NewRuntime函数来创建并初始化JS引擎。有些类型的函数,象安全控制类,提供可选择的特征。

    从概念上讲,JS引擎是你系统上的一个共享资源。通过将引擎API调用嵌入到应用程序中(包含jsapi.h文件),你可以请求JS引擎进行操作。接下来,引擎处理你的请求,并将结果或状态信息返回给你的应用程序。

    例如,假定你在使用JS引擎自动化应用程序,脚本应用程序鉴别用户并设置权限。首先,应用程序创建JS对象,该对象描述用户信息,包括姓名、ID、权限和可用的函数列表。在这种情况下,应用程序首先调用JS_NewObject创建对象。当JS引擎创建对象后,返回一个指针给应用程序。应用程序再调用JS引擎执行脚本。在创建用户对象后,应用程序即刻传递脚本给JS_EvaluateScript以便编译和运行。脚本或许取得并效验用户信息,然后建立用户存取的权利。

    JS引擎收到初始化请求后,给JS RunTime分配内存,应用程序使用的变量、对象和上下文(上下文)都保存在RunTime中。一个上下文是脚本的执行状态(JS引擎使用的)。每个同时存在的脚本或线程都必须有自己的上下文。单个的JS RunTime可以包含多个上下文、对象和变量。 几乎所有的JS引擎调用都需要一个上下文变量,应用程序在创建RunTime后,首先应调用至少一次JS_NewContext来创建一个上下文。上下文的实际数量依赖于程序中同时使用的脚本数。程序中每个同时存在的脚本都需要一个上下文。另一方面,如果某个时刻只有一个脚本编译和运行,那么你只需一个上下文给每个脚本重复使用即可。

    在创建上下文后,要调用JS_InitStandardClasses初始化引擎中的内置JS对象,包括Array、Boolean、Date、Math、Number和String。 即使在创建对象时传递一个特定的上下文给JS引擎,这个对象在RunTime中也是独立于上下文。任意脚本能与任意上下文建立联系以便存取任意对象。脚本、上下文相互之间完全独立,即使它们存取同样的对象。在给定的RunTime中,应用程序能用未指定的上下文存取任意对象。你可以创建独立的RunTime,一个用于共享上下文和对象,其余的用于私有上下文和对象。但注意,某个时刻只有一个线程能存取特定的上下文。 要让应用程序能识别JS,嵌入适当的引擎调用到你的程序中。大致有以下几个方面:

    1. 程序中包含jsapi.h。
    2. 程序中提供结构和变量声明。例如,如果你计划传递一个脚本给JS引擎,提供一个脚本字符串变量。用jsapi.h中定义的JS数据类型来声明变量。
    3. 使用JavaScript的脚本应用对象。通常这些对象与C程序中的结构和方法相对应。
    4. 将JS引擎API函数调用和变量引用插入到程序中,包括初始化内置JS对象、创建并配置用户自定义对象。
    5. 大多数JS引擎调用返回一个值。如果该值是NULL,一般表示错误发生。如果非NULL,表示成功,返回值一般是指针,程序需要使用或留到将来使用。应用程序应检查JS引擎调用的返回值。

    要让应用程序能解释JavaScript,你必须遵循某些JS API嵌入习惯。下面的例子简要说明需要嵌入到你的应用程序中去的一些API调用函数。大部分情况下,这些函数的插入顺序是很重要的。例如,在调用其他JS API之前必须初始化JS RunTime,同样在终止程序之前必须释放JS RunTime。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    /* 包含JS引擎的API头文件 */
    #include "jsapi.h"
    .
    .
    .
    //主程序声明全局JS变量,包括RunTime、一个Context和一个全局对象,然后初始化JS RunTime、创建一个Context。
    int main(int argc, char **argv)
    {
      int c, i;
      /*声明全局JS变量,包括全局和自定义对象*/
      JSVersion version;
      JSRuntime *rt;
      JSContext *cx;
      JSObject  *glob, *it;
      JSBool builtins;
      /* 初始化JS RunTime,返回结果给rt */
      rt = JS_NewRuntime(8L * 1024L * 1024L);
      /* 如果rt为空,程序终止 */
      if (!rt)
        return 1;
      /* 创建一个Context,并将其与JS RunTime关联起来 */
      cx = JS_NewContext(rt, 8192);
      /* 如果cx为空,程序终止 */
      if (cx == NULL)
        return 1;
      /* 创建全局对象 */
      glob = JS_NewObject(cx, clasp, NULL, NULL);
      /* 实例化内置对象和全局对象*/
      builtins = JS_InitStandardClasses(cx, glob);
      .
      .
      .
      return 0;
    }

    如上面这个例子所示,调用JS引擎的应用程序必须首先创建JS RunTime,而且在终止程序之前要释放这个RunTime。在实例化RunTime后,即可创建自己的JS对象模型。对象模型决定了JS对象之间的关系,JS对象本质上是一种层次结构。缺省情况下,所有的JS对象都与全局对象相关联,它们都是全局对象的后代。当初始化标准的JS类时,你自动地得到一个全局对象:

    builtins = JS_InitStandardClasses(cx, glob);

    这个全局对象创建了一些基本的、被其它对象所继承的性质和方法。当你创建自定义对象时,它们自动使用全局对象所定义的性质和方法。你可以在自定义对象上重新定义这些性质和方法,从而重载这些缺省的性质和方法。当然,你也可以接受这些缺省的分配。 你可以在内置JS对象或其它自定义对象的基础上创建自己的对象。无论哪种情况,你所创建的对象都继承了层次链中父对象、一直上溯到全局对象的全部性质和方法。

    管理RunTime

    JS RunTime是内存空间,JS引擎利用它来管理上下文、对象和与JS函数及脚本相关的变量。在执行JS函数或脚本之前,首先要调用JS_NewRunTime来初始化一个RunTime。JS_NewRunTime函数携带一个unsigned整型参数,这个参数指定了在碎片收集之前分配给RunTime内存的最大字节数。例如:

    rt = JS_NewRuntime(8L * 1024L * 1024L);

    如上所示,JS_NewRuntime返回一个指向RunTime的指针。非NULL表示创建成功。

    正常情况下,一个程序只需一个RunTime。当然,根据需要创建多个RunTime并将它们保存在不同指针上也是可以的。

    JS_DestroyRuntime(rt);

    如果你创建了多个RunTime,务必在应用程序终止前将每个都销毁。

    管理上下文(Contexts)

    几乎所有的JS API调用都要求你传递一个上下文参数。在JavaScript引擎中一个上下文代表一个脚本,引擎传递上下文信息给运行脚本的线程。每个同时运行的脚本必须指派一个唯一的上下文。当一个脚本运行完后,它的上下文也不再有用,因此这个上下文可以重新指派给一个新的脚本,或将其释放。

    调用函数JS_NewContext为某个脚本创建一个新的上下文。这个函数需要两个参数:一个与该上下文相关的RunTime指针,分配给该上下文的栈空间字节数。如果调用成功,函数返回一个指针,它指向这个新建立的上下文。例如:

    JSContext *cx;
          .
          .
          .
    cx = JS_NewContext(rt, 8192);

    这个RunTime必须已经存在。你指派给上下文的栈空间必须足够大以便提供给使用该上下文的脚本所创建的变量和对象。注意,因为需要一些与分配和维护上下文相关的overhead,你必须做到:在应用程序中必须根据需要来确定创建上下文的数量;要确保上下文在被应用程序所需要时存在,而不是反复销毁和需要时重新创建。

    当某个上下文不再需要时,它应被销毁、释放内存资源给其它程序使用。根据应用程序中JS使用的范围,可以在使用完后及时销毁,或将其保留并反复利用直到应用程序终止。无论哪种情况,当上下文不再需要时都要调用函数JS_DestroyContext来释放它,这个函数携带一个指针参数,它指向要被释放的上下文:

    JS_DestroyContext(cx);

    如果你的应用程序创建了多个RunTime,那么,应用程序可能需要知道某个上下文是与哪个RunTime相关联的。这种情况下,可以调用函数JS_GetRuntime,同时传递该上下文作为参数。JS_GetRuntime返回一个指针,它指向合适的RunTime(如果存在的话):

    rt=JS_GetRuntime(cx);

    当你创建一个上下文,你要给它指派栈空间用于存放变量和对象。在一个给定的上下文中,你也能够存放大量的数据。但是,你必须将所需的栈空间尽可能地降到最小。调用JS_SetContextPrivate函数创建一个指针,它指向该上下文所需的私有数据,调用JS_GetContextPrivate函数得到这个指针以便你能存取这数据。你的应用程序负责创建和管理私有数据。

    要创建私有数据并将其与上下文相关联:首先,创建私有数据,即常规的C语言void* 变量;然后,调用JS_SetContextPrivate函数,并指定创建私有数据的上下文和指向该数据的指针。例如:

    JS_SetContextPrivate(cx,pdata);

    随后要获取这个数据指针,请调用JS_GetContextPrivate,并传递这个上下文作为参数。这个函数返回指向私有数据的指针:

    pdata=JS_GetContextPrivate(cx);

    <?xml encoding="US-ASCII"?>
    <!ELEMENT order (header,item+,price)>
    <!ELEMENT header (billing,shipping)>
    <!ELEMENT billing (name,address,creditCard)>
    <!ELEMENT shipping (name,address)>
    <!ELEMENT name EMPTY>

    对象的处理

    1.创建内置对象和全局JS对象

    JavaScript引擎提供若干个内置对象,使得你的开发任务得以简化。例如,内置数组(Array)对象使得在JS引擎中创建和操作数组结构很容易。类似地,日期(Date)对象提供了一个操作日期的统一机制。要了解内置对象支持的全部内容,请参阅JS_InitStandardClasses。 JS引擎一直使用函数和全局对象。通常,全局对象居留在幕后,为应用程序中创建和使用的其它JS对象及全局变量提供缺省范围。在创建自己的对象前,你必须初始化全局对象。函数对象使得对象具有和调用构造函数的功能。

    一个简单的API调用,JS_InitStandardClasses,初始化全局和函数对象、内置引擎对象,方便应用程序使用它们:

    JSBool builtins;
          .
          .
          .
    builtins = JS_InitStandardClasses(cx, glob);

    JS_InitStandardClasses函数返回一个JS布尔值,表示初始化成功与否。

    你也可以为应用程序指定另外一个不同的全局对象。例如,Navigator使用window作为其全局对象。要改变应用程序的全局对象,请调用JS_SetGlobalObject。要了解更多信息,请参阅JS_SetGlobalObject。

    2.创建并初始化自定义对象

    除了使用引擎内置对象外,你还可以创建、初始化并使用自己的JS对象。特别是你在使用JS引擎用脚本来自动化应用程序时更是如此。自定义的JS对象能提供直接的程序服务,或者作为你的程序服务的接口。

    有两种方法来创建JS引擎能使用的自定义对象:

    1. 写一个JS脚本,它创建一个对象、性质、方法、构造函数,然后将这个脚本传递给JS引擎。
    2. 将代码插入到你的应用程序中,它定义了对象的性质和方法,调用引擎来初始化一个新对象,然后通过额外的引擎调用设置对象的性质。这种方法的好处是,应用程序能包含操作对象的本地方法。

    无论哪种情况,如果你创建一个对象,然后让其存在于被其它脚本使用的RunTime中,你可以调用JS_AddRef和JS_AddNamedRoot使该对象为根。使用这些函数,确保JS引擎能跟踪这些对象并在碎片收集时清除它们。

    3.如何将自定义对象嵌入到应用程序中

    将自定义对象插入到应用程序中是很有用的,比如,当对象持续需要时,或者你知道有多个脚本需要使用一个对象。将自定义对象插入到应用程序中的步骤是:

    • 创建一个JSPropertySpec数据类型,将对象的属性信息指派给它,包括属性的GET和PUT方法名字。
    • 创建一个JSFunctionSpec数据类型,将被你的对象所使用的方法信息指派给它。
    • 创建实际的C函数,它们在响应你的对象方法调用时被执行。
    • 调用JS_NewObject和JS_ConstructObject函数,以便实例化该对象。
    • 调用JS_DefineFunctions函数来创建对象的方法。
    • 调用JS_DefineProperties函数来创建对象的属性。

    描述持续的、自定义的JS对象的代码必须放在靠近程序执行的开始部分,在那些依耐于先前已存在对象的代码之前。

    4.给对象提供私有数据

    象上下文一样,你可以将大量的数据与对象进行关联,而不是将这些数据直接存放在对象里。调用JS_SetPrivate函数来创建指向对象私有数据的指针,调用JS_GetPrivate函数来获取这个指针以便你能存取这些数据。你的应用程序负责创建和管理这些私有数据。

    创建私有数据并将其与对象关联的方法:

    1)创建私有数据,作为C语言的void*变量。 2)调用JS_SetPrivate函数,指定对象和私有数据指针。

    例如:

    JS_SetContextPrivate(cx,obj,pdata);

    随后,要获取这些数据,请调用JS_GetPrivate函数,将对象作为参数进行传递。这个函数返回指向对象私有数据的指针:

    pdata=JS_GetContextPrivate(cx,obj);

    数据处理

    1.处理JS数据类型

    JavaScript定义了自己的数据类型。有些数据类型直接对应于C语言中的副本。其它的,如JSObject、jsdouble和JSString,都是JavaScript独有的。

    通常,你可以在应用程序中像使用标准的C语言数据类型一样声明、使用JS数据类型,JS引擎对那些需要多于一个字存储空间的JS数据类型的变量保持单独的栈,例如:JSObject、jsdouble和JSString。引擎会周期性地检查这些变量,看看它们是否仍在使用,如果没有,引擎就碎片收集它们,释放存储空间。

    2.处理JS值

    除了JS数据类型以外,JS引擎也使用JS值,称其为jsvals。一个jsval本质上是一个指针,指向除了整型以外的JS数据类型。对于整型,一个jsval包含这个值自身。其它情况,指针被编码成包含额外信息。利用jsvals提高引擎的效率,允许API函数处理大量的潜在数据类型。 引擎API包含一组宏,用于测试一个jsval的JS数据类型。他们是:

    • JSVAL_IS_OBJECT
    • JSVAL_IS_NUMBER
    • JSVAL_IS_INT
    • JSVAL_IS_DOUBLE
    • JSVAL_IS_STRING
    • JSVAL_IS_BOOLEAN

    除了测试一个jsval的潜在数据类型外,也能测试它看是否是原始JS数据类型(JSVAL_IS_PRIMITIVE)。原始数据类型是undefined、null、boolean、numeric和string类型。

    你也可测试jsval指向的值是否为NULL(JSVAL_IS_NULL)或void(JSVAL_IS_VOID)。

    如果一个jsval指向一个JSObject、 jsdouble或 jsstr等JS数据类型,你可利用JSVAL_TO_OBJECT、 JSVAL_TO_DOUBLE、 JSVAL_TO_STRING将jsval转为它的潜在类型。

    3.处理JS字符串

    你在JavaScript中做的许多事情都会涉及到字符串,JS引擎实现了一个称为JSString的字符串数据类型和一个指向JS字符数组的指针类型即jschar,用类处理Unicode编码的字符串。这个引擎也实现了一组通用的Unicode字符串程序。最后,JS引擎也提供内置串的支持,两个或多个独立的字符串在内存中能共享一个串。对于JSString类型的字符串,这个引擎跟踪并管理串资源。

    一般说来,当你用JS引擎操纵字符串时,你应该用JS API串处理函数来创建和复制字符串。有字符串管理程序用于创建NULL结尾的字符串或者指定长度的字符串。同时,也有程序用于计算字符串长度、比较字符串。

    4.对Unicode和Interned字符串的支持

    像其他API调用一样,具有Unicode能力的API字符串函数的名字与标准的引擎API字符串函数的名字是一一对应的。例如,如果一个标准函数名为JS_NewStringCopyN,对应的Unicode版函数就是JS_NewUCStringCopN。具有Unicode处理能力的API字符串函数对于interned字符串也是可行的。

    为了节约空间,JS引擎为共享单个字符串实例提供支持。这种共享的字符串称为"interned strings"。当你事先知道程序中会创建一个特定的、文本字符串并且要多次使用它时,请利用interned字符串。

    引擎为interned字符串提供了若干个调用:

    • JS_InternString,用于创建或再次使用一个JSString。
    • JS_InternUCString,用于创建或再次使用一个Unicode类型的JSString。
    • JS_InternUCStringN,用于创建或再次使用固定长度的Unicode型JSString。

    5.安全控制

    对于JavaScript1.3,JS引擎增加了安全增强型API函数,用于编译和运行传递给引擎的脚本或函数。JS安全模型是基于Java安全模型的。这个模型提供了一个通用的安全接口,但是,具体的安全实现是由应用程序自己来完成的。

    安全机制用在能够支持JavaScript的应用程序中的一种通用情形是比较脚本的真实性或者限制脚本的交互性。例如,你可以比较一个应用程序中两个或多个脚本的代码库,只允许来自同一个代码库的脚本能够修改共享代码库的脚本属性。

    如果要实现安全JS,请按以下步骤:

    1)在程序中声明一个或者多个JSPrincipals类型的结构。

    2)实现将给数组提供安全信息的函数。这些函数包括:给你的应用程序提供一个principals数组,用一套给定的规则对JS对象的引用数进行加减操作的机制。

    3)用你的安全信息给JSPrincipals结构赋值,这个信息可以包括通用代码信息。

    4)在运行时间环境中,编译与执行全部脚本和函数。下面列出了这些API函数和它们的目的:

    • JS_CompileScriptForPrincipals:编译但不执行一段具有安全能力的脚本。
    • JS_CompileUCScriptForPrincipals:编译但不执行一段具有安全能力、Unicode编码的脚本。
    • JS_CompileFunctionForPrincipals:利用一个文本字符串创建一个具有安全能力的JS函数。
    • JS_CompileUCFunctionForPrincipals:利用一个Unicode编码的文本字符串创建一个具有安全信息的JS函数。
    • JS_EvaluateScriptForPrincipals :编译并执行一段具有安全能力的脚本。
    • JS_EvaluateUCScriptForPrincipals:编译并执行一段具有安全能力、用Unicode编码的脚本。

    程序样例

    以下是一个简单的样例程序,它从文件test.js中读入一段脚本,然后解释执行并输出结果。脚本中可嵌入自定义对象People,People对象具有属性name(表示该人的姓名)、address(表示该人的地址)及方法print(在屏幕上显示该人的姓名、地址信息)。

    例如:下面是一段简单的js脚本,它首先利用print方法输出该人的姓名和地址,然后将姓名和地址分别修改为John和Beijing,最后再次输出其姓名和地址,看是否修改正确。

    people.print();

    people.name="John";

    people.address="Beijing";

    people.print();

    下面是C源程序代码。

    #include "js.h"
    enum tagMY_PEOPLE {MY_NAME,MY_ADDRESS};
    static JSBool GetPeopleProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp);
    static JSBool SetPeopleProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp);
    static JSBool PeoplePrint(JSContext *cx, JSObject *obj, uintN argc, 
            jsval *argv, jsval *rval);
    typedef struct{
        char name[16];
        char addr[64];}PeopleInfo;
    static PeopleInfo m_ainfo={"myName","myAddress"};
    /*定义属性的 GETTER*/
    static JSBool GetPeopleProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
    {
        if (JSVAL_IS_INT(id)) {
            switch (JSVAL_TO_INT(id)) {
                case MY_NAME:
                    *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,m_ainfo.name));
                    break;
                case MY_ADDRESS:
                    *vp=STRING_TO_JSVAL (JS_NewStringCopyZ (cx,m_ainfo.addr));
                    break;
                }
        }
        return JS_TRUE;
    }
    /*定义属性的SETTER*/
    static JSBool SetPeopleProperty (JSContext *cx, JSObject *obj, jsval id, jsval *vp)
    {
        if (JSVAL_IS_INT(id)) {
            switch (JSVAL_TO_INT(id)) {
                case MY_NAME:
                    strncpy (m_ainfo.name, JS_GetStringBytes (jss), 15);
                    break;
                case MY_ADDRESS:
                    strncpy (m_ainfo.addr, JS_GetStringBytes (jss), 63);
                    break;
                }
        }
        return JS_TRUE;
    }
    /*定义print方法*/
    static JSBool PeoplePrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, 
       jsval *rval)
    {
        fprintf(stdout,"My Name is %s.\nMy Addr is %s.\n",m_ainfo.name,m_ainfo.addr);
        return JS_TRUE;
    }
    void main()
    {
        JSString* jss;
        char buf[5120];
        int len;
        jsval rval;
        JSRuntime *rt;
        JSContext *cx;
        JSObject *globalObj,*PeopleObj;
        JSClass global_class = {
                "global",0,
                JS_PropertyStub, JS_PropertyStub,JS_PropertyStub, JS_PropertyStub,
                JS_EnumerateStub, JS_ResolveStub,JS_ConvertStub, JS_FinalizeStub };
    /*定义People类的属性数组*/
    static JSPropertySpec PeopleProperties[] =
      {
        {"name", MY_NAME,    JSPROP_ENUMERATE },
        {"address",  MY_ADDRESS,     JSPROP_ENUMERATE },
        {0}
      } ;
    /*定义People类的方法数组*/
    static JSFunctionSpec PeopleMethods[] =
    {
        {"print",          PeoplePrint,     0},
                 {0}
            };
    /*定义People类*/
    static JSClass PeopleClass = {
            "people",0,
      JS_PropertyStub,JS_PropertyStub, GetPeopleProperty, SetPeopleProperty,
      JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
    };
        typedef struct{}
          /* 初始化JS RunTime,返回结果给rt */
    rt = JS_Init(1000000L);
        if (!rt)return;
      /* 创建一个上下文,并将其与JS RunTime关联起来 */
        cx = JS_NewContext(rt, 5120);
        if (!cx)return;
      /* 创建全局对象 */
        if (!(globalObj = JS_NewObject (cx, &global_class, NULL, NULL)))return;
          /* 实例化内置对象和全局对象*/
    JS_InitStandardClasses (cx, globalObj);
    /*实例化People对象*/
    PeopleObj = JS_DefineObject (cx, globalObj, "People", &PeopleClass, 0,JSPROP_ENUMERATE);
    /*创建对象的属性*/
    JS_DefineProperties (cx,PeopleObj, PeopleProperties);
    /*创建对象的方法*/
    JS_DefineFunctions (cx,PeopleObj, PeopleMethods);
    FILE* fp;
    /*打开文件,读入脚本*/
        if (!(fp = fopen ("test.js", "r")))return;
        len = fread (buf, 1, 5120, fp);
        fclose (fp);
        if (len <= 0)return;
    /*执行一段脚本*/
        JS_EvaluateScript (cx, globalObj, buf, len, "", 1, &rval);
        jss = JS_ValueToString (cx, rval);
        fprintf(stdout,"The result is: %s",JS_GetStringBytes (jss));
    /*释放上下文*/
    JS_DestroyContext(cx);
    /*释放RunTime*/
    JS_DestroyRuntime(rt);
    return;
    }
    展开全文
  • 什么是Tapestry?

    2007-09-13 15:13:00
    Tapestry一个使用Java语言编写的开源框架,用于创建动态的、健壮的、高灵活性的web应用程序。Tapestry框架构筑在标准的Java Servlet API之上,因此它能够很好地兼容任何servlet容器或者应用服务。Tapestry将一个...
  • 超越 rabbitmqctl:开启网页后台管理界面 RabbitMQ Management 插件RabbitMQ 插件是由 Erlang 语言编写的,并且和服务器是一起运行在同一个 Erlang VM 中的。为什么需要management插件虽然大部分程序员是 CLI 的拥趸...
  • java web技术开发大全(最全最新)

    千次下载 热门讨论 2012-10-10 07:21:38
    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们Java Web服务端技术的基石,也学习Java Web开发所要必须掌握...
  • Java Web开发技术大全

    2014-11-05 14:35:40
    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们Java Web服务端技术的基石,也学习Java Web开发所要必须掌握...
  • java web开发技术大全

    热门讨论 2014-01-08 15:11:52
    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们Java Web服务端技术的基石,也学习Java Web开发所要必须掌握...
  • 什么是JavaScript  JavaScript嵌入HTML中在浏览器中的脚本语言,有与Java和C语言类似的语法  一种网页编程技术,用来向HTML页面添加交互行为  直接嵌入HTML页面  浏览器解释执行代码,不进行预编译 ...
  • ASP.Net.Web程序设计

    2011-06-15 14:52:14
    对于大多数WEB页面来说,都具有如下所示的基本结构: ……标题内容…… ……主体内容…… 6、什么是静态网页?什么是动态网页? 答:所谓静态网页,指的网页从服务器传到客户端时,网页的内容“固定不变”...
  • 五、CSS层叠样式表 理解样式表对控制页面元素外观的作用 掌握样式规则的语法 理解各种选择器 理解样式代码在什么位置编写及它们的作用范围 ... 它一门独立的语言万维网联盟(W3C)制定。 目前...
  • HTML原理到实践

    千次阅读 热门讨论 2014-01-03 22:10:46
    Web页面(网页)也一种文档,HTML就是用于编写这种文档的一种标记语言。换句话说,HTML创建网页的基础,它通过标记符号等标记网页要显示什么部分。  在熟悉HTML之前,我们先来了解一下HTML的框架架构:  ...
  • 并不是所有的用户都会中规中矩的输入符合要求的信息,你也不可能知道使用浏览器输入信息的是什么人,他们在想什么,做什么。你可以使用 CI 来防止输入不符合要求的信息。当然,你大可不必知道 CI 如何在幕后为你...
  • 6.4.1 现实的Web页面存在的问题... 145 6.4.2 HTML整理工具... 153 6.5 本章小结... 156 第7章 外文和非罗马文本... 157 7.1 Web上的非罗马文字... 157 .2 文字、字符集、字体和字形... 161 7.2.1 文字的字符...
  • Tomcat的认识

    2020-05-21 20:36:44
    JavaWeb 指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。 JavaWeb 基于请求和响应来开发的。 web资源分类 web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种。 ...
  • 解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的...
  • 初识Dreamweaver 8 讲解 上机实战 什么是网页和网站 网页的分类 网页中的常用术语...什么是网页 网页是由HTML超级文本标识语言或者其他语言编写的通过IE浏览器编译后供用户获取信息的页面它又称为Web页其中可包含文字图
  • PHP的基本概念和变量

    2020-05-20 19:56:15
    PHP 是什么?...PHP一种非常流行且广泛使用的开源服务器端脚本语言,用于编写动态生成的Web页面。PHP最初 Rasmus Lerdorf 于1994年创建。它最初被称为个人主页。 PHP脚本在服务器上执行,结果以纯HTML格
  • 关于软件测试第一天

    2020-12-11 10:29:12
    我们可以认为网站是由多个网页组合而成的一种服务 什么是网页? html文档或html文件 什么Web前端? 就是负责一个网站中前台页面的内容的编写工作 前端用什么写网页? 用html语言编写 什么是浏览器? 用来...
  • 1.什么是JavaScript JavaScript简称JS,网景公司开发的客户端脚本语言,不需要编译,可以直接运行。 Web前端三层: 结构层HTML,定义页面的结构 样式层CSS,定义页面的样式 行为层JavaScript用来实现交互,提升...
  • DOM全称document object model(文档对象模型),DOM用来干什么的呢?假设把你的文档看成一个单独的对象,DOM就是如何用HTML或者XML对这个对象进行操作和控制的标准。 面向对象的思想方法已经非常流行了,在编程...
  • 什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 -----...
  • HTML+CSS+JS详解

    2021-02-13 19:44:01
    HTML超文本标记语言(Hyper Text Markup Language),一种纯文本类型的语言,用来设计网页的标记语言,用该语言编写的文件以.html或者.htm为后缀,浏览器解释执行,在HTML的页面上可以嵌套脚本语言编写程序段,如...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 161
精华内容 64
关键字:

web页面是由什么语言编写的