推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
Plumes

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

  •  
  •   Plumes · May 23, 2013 · 5054 views
    This topic created in 4919 days ago, the information mentioned may be changed or developed.
    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提交,直接跳转呢?
    21 replies  •  1970-01-01 08:00:00 +08:00
    ForgotFun
    ForgotFun
    May 23, 2013❤️1
    1
    你的FROM的信息应该不全,可能缺少URL或者METHOD
    Plumes
    Plumes
    OP
    May 23, 2013
    2
    @ForgotFun 但是,把location那句去掉后是能够正常提交的
    ForgotFun
    ForgotFun
    May 23, 2013
    3
    @Plumes 可能chrome的js代码异步执行了,没有等submit返回就执行了下一步代码.
    ForgotFun
    ForgotFun
    May 23, 2013
    4
    @Plumes 你的跳转代码可以写在表单的CGI里.
    ForgotFun
    ForgotFun
    May 23, 2013
    5
    dntc
    dntc
    May 23, 2013
    6
    window.frames["main"].document.forms[0].submit();
    执行后会立即执行
    window.frames["main"].location.href="list_wj.jsp";
    进行跳转.
    并不会等待 submit 完了后才跳转
    jasya
    jasya
    May 23, 2013❤️1
    7
    @Plumes submit会向你所请求的界面发送数据,所以有location.href,可能你的submit的数据和请求页面的工作并没有完成,所以说不是跳过submit而且没完成
    jasya
    jasya
    May 23, 2013
    8
    这种请求你最好用ajax一个同步请求,在完成请求后在执行location.href
    Plumes
    Plumes
    OP
    May 23, 2013
    9
    @jasya 假如我现在想在iframe中载入编号为page_0,page_1....page_i这样一系列的网页,并在每个网页打开后用alert弹出 i,这样该怎么做呢?我尝试了包括回调函数,settimeout等好多种方法,结果都还是页面不跳转,依次弹出 i,然后直接跳转到最后一个网页
    jasya
    jasya
    May 23, 2013
    10
    iframe元素一样的有onload事件

    iframe[0].onload = function(){alert(this.id)}
    Plumes
    Plumes
    OP
    May 23, 2013
    11
    @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
    jasya
    May 23, 2013
    12
    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
    jasya
    May 23, 2013
    13
    @jasya 第二行不是url..汗
    是src

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

    如@thursday 所说如果你要操作不同域iframe页面下的元素是不行
    ijse
    ijse
    May 24, 2013
    19
    晕,, 程序写成这样。。。

    您 多定义几个变量不费钱。。
    Plumes
    Plumes
    OP
    May 24, 2013
    20
    最后的解决办法是在原始页面append若干iframe,把这一系列的网页同时载入,待载入完毕后,再执行其他代码
    ChanceDoor
    ChanceDoor
    May 24, 2013
    21
    提交完成返回一个值 用interval 检查到提交完成后clearInterval 再跳转
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2224 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 14:15 · PVG 22:15 · LAX 06:15 · JFK 09:15
    ♥ Do have faith in what you're doing.