代码之家  ›  专栏  ›  技术社区  ›  iJade

使用Response.RRedirect进行部分渲染的脚本在chrome和mozilla中不起作用

  •  0
  • iJade  · 技术社区  · 12 年前

    下面是我的代码。。。。。。

        Response.Write("<Table style='border:1px solid #0B5226;background-color: white;' runat='server' width = '100%'> <Tr style='font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; color:#000000; vertical-align:middle; text-align:left;'><Td width='15%'> <img src='../Images_v4/Common/Progress.gif' /></Td><Td width='80%' style='text-align: left;word-break: break-all;'><Div>In</Div></Td></Table>");
        Response.Flush();
        Response.Write("<script language='javascript'>");
    
        Response.Write("var nr = document.all.length;");
        Response.Write("for(i=0;i<nr;i++)");
        Response.Write("{");
    
        Response.Write("if(document.all(i).tagName == 'IMG' && document.all(i).nameProp == 'Progress.gif')");
        Response.Write("{");
        Response.Write("document.all(i).src = '../Images_v4/Common/Success.png';");
        Response.Write("}");
    
        Response.Write("if(document.all(i).tagName == 'DIV' && document.all(i).innerHTML == 'In Progress...')");
        Response.Write("{");
        Response.Write("document.all(i).innerHTML = 'Processed Successful';");
        Response.Write("}");
    
    
    
        Response.Write("}");
        Response.Write("</script>");
    
        Response.Flush(); 
    

    上面的代码通过编写响应显示了aspx页面上的状态消息,当特定的事情完成一段时间后,它会将状态图像从进度更改为成功。 上面的代码在IE中运行良好,因为 document.all(i).nameProp文件 似乎在IE中有效。但这个东西在chrome和mozilla等其他浏览器中不起作用。除了 document.all(i).nameProp文件 它适用于所有浏览器。或者任何其他实现这一点的方法。 我正在使用c#web应用程序

    1 回复  |  直到 12 年前
        1
  •  0
  •   vinczemarton    12 年前

    我建议 document.getElementsByTagName('*') document.all 仅适用于旧IE(IE5)。

    nameProp也是仅IE,但类似的功能可以通过简单的regex函数轻松实现:

    为了实现绝对兼容性:

    function getFileName(path) {
        return path.match(/[-_\w]+[.][\w]+$/i)[0];
    }
    
    var all = document.all || document.getElementsByTagName('*');
    for(var i=0, elem; elem=all[i++];) {
        if (elem.tagName == 'IMG' && getFileName(elem.src) == 'Progress.gif') {
            elem.src = '../Images_v4/Common/Success.png';
        }
        ... THE SAME FOR THE DIVS.
    }
    

    最好不要浏览页面上的所有元素:

    var imgs = document.getElementsByTagName('img');
    var divs = document.getElementsByTagName('div');
    for(var i=0, elem; elem=imgs[i++];) {
        if (getFileName(elem.src) == 'Progress.gif') {
            elem.src = '../Images_v4/Common/Success.png';
        }
    }