如何拦截表单的脚本submit动作======================>用于htc中 或者变通一点..如何知道某段脚本是否会最终调用form的submit方法(直接或间接) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你使用 document.forms[i].attachEvent("onsubmit",yourhandle)那样子尝试一下,似乎在HTC中只有采用那样的方法拦截了 脚本调用submit是不会引发onsubmit事件的,所以钩住onsubmit也是白搭 5.0以下的我不是很清楚,刚才查了一下资料,IE5.5以上可以使用fireEvent来触发onsubmit事件,就可以可以要求在form.submit()之前调用,这个可能是一个变通的方法,在你的客户代码中如果是直接submit的,就添加fireEvent("onsubmit"),我还没有去测试过,只是觉得这个应该是一个替代的解决方案 <PUBLIC:COMPONENT><ATTACH EVENT="onsubmit" HANDLER="customFunc" /><SCRIPT LANGUAGE="JavaScript">function customFunc(){ //code here}</SCRIPT></PUBLIC:COMPONENT> Mongris(Mongris) 老兄这样写,在使用代码submit的时候,是没有办法调用onsubmit的 不好意思看错了楼主的题意我对此问题的做法是在FORM.htc中创建一个新的function来封装customfunc和submit to liuruhong(蓝色街灯) 就是为了减少htc的外部依赖,在不改动原有文档的函数的基础上在submit事件链中增加相应的处理.类似于win32 api中的SetWindowHook,对于不合法的提交动作进行拦截.如果一个软件中上千个页面提交都去改动函数的话htc就失去意义了.做这个的目的是为了将前一段时间写的一个htc表单验证组件进一步完善,实现对用户完全透明性.按照指定的验证接口结合正则表达式,进行验证并在相应的上下文中进行适当的处理. 类似SetWindowHook在web编程中估计有点够呛,不过倒是可以探讨探讨实现的技巧 我想到的一个变通办法就是检测对submit方法的调用,并在其调用前插入自己的处理.只是不知道window有没有类似window.functions之类的成员可以检索页面中定义的所有function然后用正则表达式对function body进行查找. 我个人认为,最简单的方法就是查找。替换找到所有使用 obj.submit()替换成 自己编写的函数,最重要的是可以加上fireEvent()我是说IE5.5+其他偶想不出好办法了阿 to liuruhong(蓝色街灯)如果有链入的外部函数呢? document.scripts可以全部获得,似乎只有如此了,真正意义的hook应该不行,除非你使用ActiveX document.scripts检索的只是一个script标记集合,它无法检索其定义的链入内容,包括函数定义..如果能检索它的内容,要实现hook就容易了,我可以篡改函数的实现.让它路由至我的函数中 document.scripts检索的只是一个script标记集合,它无法检索其定义的链入内容,包括函数定义..如果能检索它的内容,要实现hook就容易了,我可以篡改函数的实现.让它路由至我的函数中 老兄,如果那样,偶就想不出特别好的方法了另外对于源文件,还有一个方法就是search --replace,嘿嘿 当然,我可以利用download behavior实现将src指向的文件Z抓回来,但是对那些运行时创建的引用和运行时创建的函数仍然是无能为力.. 可惜dom的方法不可以重写偶无法帮忙了,偶认为最可行的方法就是使用查找替换原来的submit,然后都加入自己的回调函数 试一下方法,成功的话告诉我:在htc初始化时,替换form的action到一个函数,并记住旧action<script>function doit(ofrm){ ofrm = form1;//You should find someway out here to got FORM instance ofrm.fireEvent("onsubmit"); if(doYourHTCcheck(ofrm)) event.returnValue = false; else { ofrm.action = oldAction ofrm.submit(); }}</script><form id=form1 action="javascript:doit(this)" onsubmit="alert(1);status=1;return true;"><input></input></form><script>form1.submit();//form1.fireEvent("onsubmit");</script> 请教如何 用JS获得gridview里指定单元格里label的值 我的脚本不运行是什么原因 300分求JS分页,顶者有分 请问怎么按名称空间遍历 如何用js获取用户在其他网站输入过的信息? 非常急高分求解。谢谢 用frame做了上下框架,我上面框架里面放了菜单,但菜单下拉时被隐藏了,不让隐藏怎么解决 菜单问题,数位红使用的菜单. ▇▇▇▇▇关于javascript自定义对象问题,我错在哪了? 如何实现点击按钮,打开下拉菜单列表? 高手求助:怎样用java脚本执行exe文件,请进, 关闭网页时,怎么让它不出现是否关闭的询问框啊?
那样子尝试一下,似乎在HTC中只有采用那样的方法拦截了
<ATTACH EVENT="onsubmit" HANDLER="customFunc" />
<SCRIPT LANGUAGE="JavaScript">
function customFunc(){
//code here
}
</SCRIPT>
</PUBLIC:COMPONENT>
看错了楼主的题意我对此问题的做法是在FORM.htc中创建一个新的function来封装customfunc和submit
就是为了减少htc的外部依赖,在不改动原有文档的函数的基础上在submit事件链中增加相应的处理.类似于win32 api中的SetWindowHook,
对于不合法的提交动作进行拦截.如果一个软件中上千个页面提交都去改动函数的话htc就失去意义了.做这个的目的是为了将前一段时间写的一个htc表单验证组件进一步完善,实现对用户完全透明性.按照指定的验证接口结合正则表达式,进行验证并在相应的上下文中进行适当的处理.
只是不知道window有没有类似window.functions之类的成员可以检索页面中定义的所有function然后用正则表达式对function body进行查找.
替换成 自己编写的函数,最重要的是可以加上fireEvent()我是说IE5.5+其他偶想不出好办法了阿
如果有链入的外部函数呢?
<script>
function doit(ofrm)
{
ofrm = form1;//You should find someway out here to got FORM instance
ofrm.fireEvent("onsubmit");
if(doYourHTCcheck(ofrm))
event.returnValue = false;
else
{
ofrm.action = oldAction
ofrm.submit();
}
}</script>
<form id=form1 action="javascript:doit(this)" onsubmit="alert(1);status=1;return true;">
<input></input>
</form><script>
form1.submit();
//form1.fireEvent("onsubmit");
</script>