如何拦截表单的脚本submit动作======================>用于htc中

yonghengdizhen 2003-07-27 05:55:16
RT
...全文
180 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsj 2003-08-05
  • 打赏
  • 举报
回复
试一下方法,成功的话告诉我:

在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>
jzywh 2003-07-30
  • 打赏
  • 举报
回复
不用拦截

不用 type=submit
yonghengdizhen 2003-07-30
  • 打赏
  • 举报
回复
document.scripts检索的只是一个script标记集合,它无法检索其定义的链入内容,包括函数定义..

如果能检索它的内容,要实现hook就容易了,我可以篡改函数的实现.让它路由至我的函数中
yonghengdizhen 2003-07-30
  • 打赏
  • 举报
回复
document.scripts检索的只是一个script标记集合,它无法检索其定义的链入内容,包括函数定义..

如果能检索它的内容,要实现hook就容易了,我可以篡改函数的实现.让它路由至我的函数中
liuruhong 2003-07-30
  • 打赏
  • 举报
回复
document.scripts可以全部获得,似乎只有如此了,真正意义的hook应该不行,除非你使用ActiveX
yonghengdizhen 2003-07-30
  • 打赏
  • 举报
回复
to liuruhong(蓝色街灯)
如果有链入的外部函数呢?
liuruhong 2003-07-30
  • 打赏
  • 举报
回复
我个人认为,最简单的方法就是查找。。。。。。。替换

找到所有使用 obj.submit()
替换成 自己编写的函数,最重要的是可以加上fireEvent()我是说IE5.5+

其他偶想不出好办法了阿
liuruhong 2003-07-30
  • 打赏
  • 举报
回复
可惜dom的方法不可以重写

偶无法帮忙了,偶认为最可行的方法就是使用查找替换原来的submit,然后都加入自己的回调函数
yonghengdizhen 2003-07-30
  • 打赏
  • 举报
回复
当然,我可以利用download behavior实现将src指向的文件Z抓回来,但是对那些运行时创建的引用和运行时创建的函数仍然是无能为力..

liuruhong 2003-07-30
  • 打赏
  • 举报
回复
老兄,如果那样,偶就想不出特别好的方法了

另外对于源文件,还有一个方法就是search --replace,嘿嘿
yonghengdizhen 2003-07-29
  • 打赏
  • 举报
回复
是的..
jsidiot 2003-07-29
  • 打赏
  • 举报
回复
拦截?
yonghengdizhen 2003-07-29
  • 打赏
  • 举报
回复
我想到的一个变通办法就是检测对submit方法的调用,并在其调用前插入自己的处理.
只是不知道window有没有类似window.functions之类的成员可以检索页面中定义的所有function然后用正则表达式对function body进行查找.
liuruhong 2003-07-29
  • 打赏
  • 举报
回复
类似SetWindowHook在web编程中估计有点够呛,不过倒是可以探讨探讨实现的技巧
yonghengdizhen 2003-07-29
  • 打赏
  • 举报
回复
to liuruhong(蓝色街灯)
就是为了减少htc的外部依赖,在不改动原有文档的函数的基础上在submit事件链中增加相应的处理.类似于win32 api中的SetWindowHook,
对于不合法的提交动作进行拦截.如果一个软件中上千个页面提交都去改动函数的话htc就失去意义了.

做这个的目的是为了将前一段时间写的一个htc表单验证组件进一步完善,实现对用户完全透明性.按照指定的验证接口结合正则表达式,进行验证并在相应的上下文中进行适当的处理.
Mongris 2003-07-29
  • 打赏
  • 举报
回复
不好意思
看错了楼主的题意

我对此问题的做法是在FORM.htc中创建一个新的function来封装customfunc和submit
liuruhong 2003-07-29
  • 打赏
  • 举报
回复
Mongris(Mongris) 老兄这样写,在使用代码submit的时候,是没有办法调用onsubmit的
Mongris 2003-07-29
  • 打赏
  • 举报
回复
<PUBLIC:COMPONENT>
<ATTACH EVENT="onsubmit" HANDLER="customFunc" />
<SCRIPT LANGUAGE="JavaScript">
function customFunc(){
//code here
}
</SCRIPT>
</PUBLIC:COMPONENT>
liuruhong 2003-07-29
  • 打赏
  • 举报
回复
5.0以下的我不是很清楚,刚才查了一下资料,IE5.5以上可以使用fireEvent来触发onsubmit事件,就可以可以要求在form.submit()之前调用,这个可能是一个变通的方法,在你的客户代码中如果是直接submit的,就添加fireEvent("onsubmit"),我还没有去测试过,只是觉得这个应该是一个替代的解决方案
yonghengdizhen 2003-07-28
  • 打赏
  • 举报
回复
脚本调用submit是不会引发onsubmit事件的,所以钩住onsubmit也是白搭
加载更多回复(2)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧