JS新手求助一个诡异的问题

2013-05-23 00:25:08 +08:00
 Plumes
for(i=0;i<window.frames["main"].document.forms[0].elements.length;i=i+4)
{
window.frames["main"].document.forms[0].elements[i].checked=true;
}
window.frames["main"].document.forms[0].submit();
window.frames["main"].location.href="list_wj.jsp";

这是我的代码,功能是填写“main” iframe 里的一个表格,然后执行submit函数提交,接着使iframe跳转回list_wj.jsp,为什么在Chrome的console里执行的时候,会跳过执行submit提交,直接跳转呢?
3846 次点击
所在节点    JavaScript
21 条回复
ForgotFun
2013-05-23 00:31:46 +08:00
你的FROM的信息应该不全,可能缺少URL或者METHOD
Plumes
2013-05-23 00:42:46 +08:00
@ForgotFun 但是,把location那句去掉后是能够正常提交的
ForgotFun
2013-05-23 00:44:19 +08:00
@Plumes 可能chrome的js代码异步执行了,没有等submit返回就执行了下一步代码.
ForgotFun
2013-05-23 00:45:11 +08:00
@Plumes 你的跳转代码可以写在表单的CGI里.
ForgotFun
2013-05-23 00:47:01 +08:00
dntc
2013-05-23 01:00:21 +08:00
window.frames["main"].document.forms[0].submit();
执行后会立即执行
window.frames["main"].location.href="list_wj.jsp";
进行跳转.
并不会等待 submit 完了后才跳转
jasya
2013-05-23 01:02:01 +08:00
@Plumes submit会向你所请求的界面发送数据,所以有location.href,可能你的submit的数据和请求页面的工作并没有完成,所以说不是跳过submit而且没完成
jasya
2013-05-23 01:03:42 +08:00
这种请求你最好用ajax一个同步请求,在完成请求后在执行location.href
Plumes
2013-05-23 11:13:33 +08:00
@jasya 假如我现在想在iframe中载入编号为page_0,page_1....page_i这样一系列的网页,并在每个网页打开后用alert弹出 i,这样该怎么做呢?我尝试了包括回调函数,settimeout等好多种方法,结果都还是页面不跳转,依次弹出 i,然后直接跳转到最后一个网页
jasya
2013-05-23 11:22:01 +08:00
iframe元素一样的有onload事件

iframe[0].onload = function(){alert(this.id)}
Plumes
2013-05-23 11:31:24 +08:00
@jasya
for(k=4;k<=6;k++){
window.frames["main"].location.href="http://example.com/pg.jsp?wj_num="+k;
window.frames["main"].onload=alert(k);
}
这是我的代码,依然是在当前页面依次弹出4,5,6,然后直接跳转到page6
jasya
2013-05-23 11:59:00 +08:00
for(k = 4; k<=6;k++){
window.frames["main"].document.forms[k].url = "http://example.com/pg.jsp?wj_num="+k;
window.frames["main"].document.forms[k].onload = function(){alert(k)};
}
jasya
2013-05-23 12:01:46 +08:00
@jasya 第二行不是url..汗
是src

window.frames["main"].document.forms[k].src= "http://example.com/pg.jsp?wj_num="+k;
Plumes
2013-05-23 12:32:16 +08:00
@jasya 还是不行,汗,效果还是一样的不
jasya
2013-05-23 12:38:18 +08:00
@Plumes 你是要在一个iframe中载入网页还是有多个iframe?
Plumes
2013-05-23 12:49:03 +08:00
@jasya 就是同一个frame中依次载入一系列网页,大概流程就是载入一个网页,处理该网页,处理完毕后,载入下一个网页
thursday
2013-05-23 13:09:03 +08:00
是不是跨域了。。同源策略导致的不能 操作 其他域名下的iframe页面
jasya
2013-05-23 13:13:25 +08:00
@Plumes https://gist.github.com/jasya/5632884 你看下这个,应该和你说的意思一样

如@thursday 所说如果你要操作不同域iframe页面下的元素是不行
ijse
2013-05-24 09:18:56 +08:00
晕,, 程序写成这样。。。

您 多定义几个变量不费钱。。
Plumes
2013-05-24 11:55:13 +08:00
最后的解决办法是在原始页面append若干iframe,把这一系列的网页同时载入,待载入完毕后,再执行其他代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX