页面css不会在javascript函数中刷新

时间:2012-12-13 14:29:07

标签: css ajax google-chrome visibility

我的第一个问题是温柔的:)。

我有更改css元素及其刷新的问题。我正在创建一个带有ajax请求的webforms应用程序。我的问题是,当somone从树视图中选择一个报告时,它应该显示带有加载符号的gif,并且在收到数据后它应该显示它。它在firefox和opera上运行良好,但不是在家务活或野餐。这是代码:

这是当有人单击树节点时启动的方法     this.hideElements();     var id = node.getId()。substr(2);

var client = new CAjaxClient();
var data;

client.addParameter(new CKeyValuePair('ReportID', id));

client.postCallBack('/ajaxpages/Reports.aspx', 'GetReportFilters', this.dataRecieved);

filterGenerator.setReportID(id);

这个方法hideElements()

$('#FiltersContainer').css('visibility', 'hidden');
$('#ActionsContainer').css('visibility', 'hidden');
$('#loadingDiv').css('visibility', 'visible');
$("input[id$='Date']").parent().css('visibility', 'hidden');

这是ajax postBack方法

if (this.readyState == 4 && this.status == 200) {
$('#FiltersContainer').css('visibility', 'visible');
$('#ActionsContainer').css('visibility', 'visible');
$('#loadingDiv').css('visibility', 'hidden');
var data = eval(this.responseText);
filterGenerator.processFiltersData(data);

数据和所有内容都按顺序返回,只是在请求时间内浏览器就像冻结一样,当数据返回时,css状态就是整个过程结束时的状态。从未显示加载div。我也试图强制重绘与domelement.style改变但没有效果。当我逐行执行chrome调试器中的代码时,一切都很顺利。如果可以,请帮忙。

Html代码(vio:TreeView是我们自己的ASP控件):

<div id="pageHeader" style="display:inline-block">

        <div id="headerImageDiv" style="float:left; margin-left:15px; margin-top:5px;">
            <img src="style/default/printerLarge.png" alt="" />
        </div>

        <div id="pageTitleDiv" style="float:left">
            <span style="display:block; margin-top:20px;margin-left:10px;color:#78b4bb; font-size:20px;">Reports And Analyses</span>
            <span style="display:block; margin-top:20px;margin-left:10px;font-size:18px;">Select a report</span>   
        </div>

    </div>
    <br />
    <div id="mainPane" style="display:inline-block;width:100%;">
        <div id="readerTreeContainer" style="float:left;border-top-style:solid;border-left-style:solid;border-bottom-style:solid;border-right:none; border-width:1px; overflow : auto;width:300px;height:auto; background-color:white;">
             <vio:TreeView ID="TreeView" runat="server"
                     Width="298" Height="500"
                     ActionListener="ReportsGeneralListener"
                     ActionListenerScript="ReportsGeneralTree.js"
                     GlobalTreeviewName="reportsTreeview">
             </vio:TreeView>

        </div>

        <div id="FiltersContainer" style="position:relative;visibility:hidden;float:left;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left:solid 1px; border-width:2px; overflow : auto;width:30%;height:500px; background-color:#dbdae4;">
            <div id="filterColumnOne" style="float:left;width:50%;height:100%;border-right:solid 1px;border-left:none;">

            </div>
                <div id="filterColumnTwo" style="float:left;width:49%;height:100%;">
            </div>
            <div id="loadingDiv" style="z-index:10;position:absolute;top:50%;left:50%;margin: -35% 0 0 -35%;z-index:100001;height:316px;width:396px;">
                <div  style="position:relative;display:block">
                     <img src="style/default/loading.gif" alt="" style="position:absolute;left:0px;top:0px;z-index:-1;"/>
                    <span style="display:block;text-align:center;padding-top:80px;font-size:25px;font-weight:bold;">Loading Report</span>
               </div>
            </div>
        </div>

        <div id="ActionsContainer" style="visibility:hidden;float:left;border-left-style:none;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-width:2px; overflow : auto;width:200px;height:200px; background-color:#abe9e7;">
              <div style="display:block;border-bottom:solid 1px;height:50%">
                  <div style="position:relative; height:100%;">
                      <div style="position:absolute;top:50%;left:50%; height:72px;margin: -35px 0 0 -35%;">
                          <img src="style/default/document.png" alt="" style="float:left;margin-right:10px;"/>
                          <button type="button" style="margin-top:18%;height:30px;" onclick="print();">Print</button>
                      </div>
                  </div>

              </div>

              <div style="display:block;border:none;height:49%;">
                  <div style="position:relative; height:100%;">
                      <div style="position:absolute;top:50%;left:50%; height:72px;margin: -35px 0 0 -35%;">
                          <img src="style/default/application_pdf.png" alt="" style="float:left;margin-right:10px;height:72px;"/>
                          <button type="button" style="margin-top:18%;height:30px;">PDF</button>
                      </div>
                  </div>
              </div>
        </div>

    </div>

1 个答案:

答案 0 :(得分:0)

尝试使用.hide和.show。他们跨浏览器工作。

请参阅jQuery API

我认为你的问题是:

<div stuff I'm hiding>
    <div loading screen>

有关您提供的内容的工作演示,请参阅here。我删除了内联可见性:隐藏在样式中(我建议你拆分成一个CSS文件,它使它变得不可读)并从你隐藏的div中取出加载div。