WEB开发网
开发学院网页设计JavaScript 使浏览器实现JavaScript支持的方法解析 阅读

使浏览器实现JavaScript支持的方法解析

 2010-09-14 13:04:09 来源:WEB开发网   
核心提示: BuildModel的首要任务是将Token后的结点按包含关系展成一棵树,其次就是要将某些结点注册为JavaScript对象,使浏览器实现JavaScript支持的方法解析(3),注册的过程是:定义新对象:JSObject *proto;初始化该对象:TD_JSXMLElementClas

BuildModel的首要任务是将Token后的结点按包含关系展成一棵树。

其次就是要将某些结点注册为JavaScript对象。

注册的过程是:

定义新对象:JSObject *proto;

初始化该对象:TD_JSXMLElementClassInit(JS_GetGlobalContext(),

(void **)&proto))

使用JS_DefineObject或JS_NewObject定义对象属性:

根据是否定义了该元素的名称区别对待:

if(TD_XMLContentIsNamedItem(aElement,&aName))
{
parent = js_GetGlobalObject();
*aReturn=JS_DefineObject(JS_GetGlobalContext(),js_GetGlobalObject(),aName->
mStr,&ElementClass,proto,JSPROP_ENUMERATE);
}
else
{
parent=aElement->parent->mScriptObject;
*aReturn = JS_NewObject(JS_GetGlobalContext(), &ElementClass, proto, parent);
}

将对象加入:

JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement);

这样,在编译时,HTML元素的标识就能被Javascript编译器识别,否则会报错变量未定义。

问题2解决:利用注册给对象的函数实现操作符的功能化。

具体可理解为:

当image0.src ="1.gif"被执行时,相当于为对象设置或改变属性,此时SetElementProperty函数被调用(该函数在注册该对象时由 JSXMLElementClassInit捆绑给该对象,其内容由用户自己定义),SetElementProperty通过函数指针调用函数 TD_JSXMLSetAtrByID,改变结点树上结点属性,并重新生成该节点对应的widget,重画界面。

问题:如何建立Javascript对象与结点树上结点的对应?

答: Javascript对象与结点树是同时生成的,它们的共同性质是结点具有相同属性,Javascript对象根据ID属性查找树,找到要操作的对应结点。

四、 浏览器消息响应

在主消息循环中调用TDWidgetProcessMsg,处理与widget有关消息。

首先:取得当前焦点所在的widgetpWidget=TDWidgetGetAtPoint(pThis->baseDoc.base.mWidget,pt,&index);

处理该widget对该消息的响应。

最后一般为调用javascript执行,实现实际响应。

TDVOID TDWidgetDoAction(TDPWidgetAction pAnchor)
{
jsval jval;
if(pAnchor)
TD_EvaluateScript(JS_GetGlobalContext(),js_GetGlobalObject(),
pAnchor->mAction.mStr,pAnchor->mAction.mLength,TDNULL,0,&jval);
}

上一页  1 2 3 

Tags:浏览器 实现 JavaScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接