gpt4 book ai didi

asp.net - 为 Web UI 实现有限状态机

转载 作者:行者123 更新时间:2023-11-29 15:53:53 24 4
gpt4 key购买 nike

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

  1. 从 --> 网页中提取控件 ID,
  2. 将控件 ID 写入 XML --> Controls-XML。
  3. 在 --> Controls-XML 中手动声明状态和转换
  4. 扫描 Controls-XML 并将预先声明的 Jscript 附加到事件处理程序,将它们嵌入到 --> 网页中..5.

这有多可行..

我是不是陷入了困境?

最佳答案

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

你的问题有点含糊,如果我没有理解你的观点,请提供更多细节,也许这应该在部分细节中加深讨论

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

通过提取控件的 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...您可以通过打印某些标签(如 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 文档(如上述函数所做的那样),而不是提供原始 xml 文本,您的扫描函数应该使用 XMLDOM 命令将节点插入到文档中。

在 --> Controls-XML 中手动声明 States 和 Transition

这很难,是否要复制/粘贴此(XML 文档)信息并在以后进行编辑?是否通过插入一堆代码来构建界面来就地编辑?

这里有很多疑问,但是一旦我们有了 XML 格式的信息,我们就可以自由发挥我们的想象力并决定一种格式来处理所需的状态更改。

扫描 Controls-XML 并将预先声明的 Jscript 附加到事件处理程序,将它们嵌入 --> 网页

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

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

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

关于asp.net - 为 Web UI 实现有限状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com