为Web UI实现有限状态机

时间:2010-01-29 10:51:57

标签: asp.net javascript asp.net-mvc

我打算以下列方式开发有限状态机。

  1. 从 - >中提取控制ID网页,
  2. 将控制ID写入XML - >控制-XML。
  3. 在 - >中手动声明状态和过渡控制-XML
  4. 扫描控件-XML并将预先声明的Jscript附加到将其嵌入到 - >中的事件处理程序中。网页.. 5。
  5. 这有多可行..

    我是否遇到了蠕虫病毒?

1 个答案:

答案 0 :(得分:1)

首先,我们生活在一群蠕虫中!

你的问题有点模糊,如果我错过了你的观点,请提供更多详细信息,也许这应该是paraks中的喙,以加深部分细节中的讨论

假设您希望通过任何页面在客户端浏览器上实时工作

通过提取ID控件我支持它的所有网页控件(可能是通过点击或点击可能使用键组合),但让我们很简单。

提取ID

这里的代码可能对您有所帮助:

function scan(e) {
  if (e&&e.childNodes)
  for(var i=0;i<e.childNodes.length;i++) {
    var child=e.childNodes[i];
    if (child) {
      if(child.id) console.log(child.nodeName,child.id);
      scan(child);
    }
  }
}

注意:这是使用chrome完成的,但我认为任何浏览器控制台都可以。

只需将该功能粘贴到控制台上,然后调用它:

scan(document)

它将列出(在控制台上)所有具有id显示元素类型和id的元素...你可以通过打印某些标签的元素来过滤那个eazy,如INPUT,SELECT TEXTAREA等......

关于XML

这里的浏览器有点棘手,您可以将它简化为您最喜欢的浏览器,以下函数构造一个XML文档给出一些XML文本。 因此,通过这种方式,您的扫描功能应该组成xml文本(而不是写入控制台),之后我们可以提供XML文档

function makeNode(text) {
var doc;
if (window.ActiveXObject) {
    doc=new ActiveXObject("Microsoft.XMLDOM");
    doc.async="false";
    doc.loadXML(text);
} else {// code for Mozilla, Firefox, Opera, etc.
    var parser=new DOMParser();
    doc=parser.parseFromString(text,"text/xml");
}// documentElement always represents the root node
return doc.documentElement;
}

其他方法是创建一个空的XML文档(如上面的函数所做),而不是feed raw xml文本,扫描函数应该使用XMLDOM命令将节点插入到文档中。

在 - &gt;中手动声明状态和过渡控制-XML

这是一个很难的,这个(XML doc)信息是要复制/粘贴后来编辑的吗?它是通过插入一堆代码来构建一个接口来进行编辑的吗?

这里有很多疑问,但是一旦我们获得了XML格式的信息,我们就可以自由地运用我们的想象力来决定一种格式来处理所需的状态变化。

扫描控件-XML并将预先声明的Jscript附加到将其嵌入到 - &gt;中的事件处理程序中。网页

此时操作依赖于上面所遵循的方法,但在任何情况下,使用XMLDOM函数遍历xml文档并将状态更改或事件处理程序应用于控件都是微不足道的。

控件不再需要扫描,因为我们已经存储了id(使用getElementById)

我有一个表单验证系统做类似的事情,除了XML是预定义的并存储在服务器端,但一旦加载它就会做到这一点。附加事件处理程序并根据评估的表达式执行状态更改。