我打算以以下方式发展一个有限状态机。
从a->web页面提取控制ID,Controls-XML.
这是多么的可行。
我要进虫子罐头了吗?
发布于 2012-04-21 02:10:57
首先,我们生活在一罐虫子里!
你的问题有点含糊不清,如果我遗漏了你的观点,请提供更多的细节,也许这应该是一针见血,以加深部分细节的争论。
假设您想在任何页面上在客户端浏览器上工作
通过提取控件的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);
}
}
}注意:这是用铬做的,但我认为任何浏览器控制台都可以。
只需将函数粘贴到控制台上,然后按如下方式调用:
scan(document)它将(在控制台上)列出所有具有id显示元素类型和id的元素.您可以通过打印输入等特定标记的元素,选择TEXTAREA等来过滤eazy。
关于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文档(正如上面的函数所做的),扫描函数应该使用XMLDOM命令将节点插入到文档中,而不是提要原始xml文本。
在->控件-XML中手动声明状态和转换。
这是一个很难的问题,这(XML )信息是要复制/粘贴,然后再进行编辑吗?它是否通过插入一堆代码来构建接口来进行内部编辑?
这里有很多疑问,但是一旦我们有了XML格式的信息,我们就可以自由地使用我们的想象力并决定一种格式来处理想要的状态更改。
扫描控件-XML并将预声明的Jscript附加到嵌入在->web页面中的均衡器中。
此时,操作依赖于上面遵循的方法,但无论如何,使用XMLDOM函数遍历XMLDOM并将状态更改或事件处理程序应用于控件是很简单的。
控件不再需要扫描,因为我们已经存储了id(使用getElementById)
我有一个表单验证系统,它可以执行类似的操作,但XML是预定义的并存储在服务器端,但是一旦加载,它就会做到这一点。附加事件处理程序并根据计算的表达式进行状态更改。
https://stackoverflow.com/questions/2161379
复制相似问题