0

我设置了一个简单的表单来使用 KendoUI 上传文件,并且在我的开发机器(OSX Apache)上看起来和工作得很好,但是上传到我的服务器(Linux Apache)它看起来很糟糕,正如你在图像中看到的那样。我在 Firefox 和 chrome 中都测试了相同的结果,从本地复制都很好,从远程复制不好。我已经三次检查本地和远程服务器上的所有文件是否相同。

在开发机器上很好对比上传后卡顿

我的代码如下...

<!doctype html>
<html>
  <head>
    <title>Test | Animation Tool</title>
    <link href="./kendo/styles/kendo.common.min.css" rel="stylesheet"/>
    <link href="./kendo/styles/kendo.kendo.min.css" rel="stylesheet"/>
    <script src="./jquery.js"></script>

    <script src="./kendo/js/kendo.all.min.js"></script>

    <style type="text/css">
      body{
        background-Color: #f78049;
        background-image: url(stripe.png);
        background-repeat: repeat-y;
        margin:0;padding:0;
        font-family:sans-serif;
      }
      #sidebar{
        background-Color: #f78049;
        border: 3px solid #ef652a;
        margin:0;padding:0;
        width: 300px;
        float: left;
        height: 900px;
      }
      .step{
        border-top: 3px solid #ef652a;
      }
      .step p.first{
        display: inline;
      }
      .step-id{
        background-color: #ef652a;
        -moz-border-radius: 7px;
        font-size: 30px;
        margin: .2em .2em .2em 0;
        padding: .1em .2em;
      }
      .t-button{
        margin: 0 37px 0 37px;
        width:203px;
        top: 10px;
      }
      button.t-button{
        margin: .2em 37px .2em 37px;
        width:220px;
      }
      .t-upload-files{
        margin: 0.2em 2.6em 1em;
      }
      #main{
        float:left;
      }
      h1, h2{
        margin:0;padding:0 0 0.3em;
        text-align:center;
        color:#ffd;
      }
      #phone,#anim{
        width:401px;
        height:875px;
        background-image:url(phone.png);
        position: absolute;
        top:10px;
        left:350px;
      }
      #anim{
        background-image:url("files/spec.png");
        background-position:0 0;
        background-repeat:no-repeat;
        height:480px;
        left:391px;
        top:144px;
        width:320px;
      }
      a img{
        border:none;
      }
    </style>
      <script type="text/javascript">
        $(function(){

          var i=0, x={timer:null, frames:4, frameWidth:320, frameRate:150};

          var addTestFile = function(filename){
            $('#test-files').append(
              $('<button />').addClass('t-button custom').html(filename).click(function(){
                $anim = $('#anim').css({backgroundImage:'url("files/'+filename+'")'})
                  var loop = function(){
                    $anim.css({backgroundPosition:"0 0"}).animate({borderWidth:0},150,function(){
                      $anim.css({backgroundPosition:"-320px 0"}).animate({borderWidth:0},150,function(){
                        $anim.css({backgroundPosition:"-640px 0"}).animate({borderWidth:0},150,function(){
                          $anim.css({backgroundPosition:"-960px 0"}).animate({backgroundPosition:"-640px 0"},250,function(){

                          })
                        })
                      })
                    })
                  }
                  clearInterval(x.timer)
                  x.timer = setInterval(function(){
                  loop()
                  }, 950)
              })
            )
          }

          $.get('files.php',function(d){
            $.each(d, function(i,file){
              addTestFile(file)
            })
          })

          $("#files").kendoUpload({
            async: {
              saveUrl: "./save.php",
              // removeUrl: "./remove.php",
              autoUpload: true
            },
            showFileList: true,
            success: function(e){

              $('.t-file').last().siblings().remove()

              var filename = e.files[0].name.replace(/\s/g,'-')

              $('#test-files button').filter(function(){
                return $(this).text() == filename
              }).remove()

              addTestFile(filename)

              console.log('uploaded' + e.files[0].name);
              //              return true;
            },
            error: function(e){
              console.log("Error (" + e.operation + ")");
              e.preventDefault(); // Suppress error message
            }

          });
        });
      </script>
  </head>
  <body>
    <div id="sidebar">
      <h2>Animation Tool</h2>

      <div id='one' class='step'>
        <span class='step-id'>1</span>
        <p class="first">Get the specification image</p>
        <p><a href="getspec.php" class='t-button'>Download image...</a></p>
      </div>

      <div id='two' class='step'>
        <span class='step-id'>2</span>
        <p class="first">Edit the downloaded image file</p>

      </div>

      <div id='three' class='step'>
        <span class='step-id'>3</span>
        <p class="first">Upload your edited file</p>
        <input name="files" id="files" type="file" />
      </div>

      <div id='two' class='step'>
        <span class='step-id'>4</span>
        <p class='first'>Test you animation</p>
        <span id='test-files'></span>
      </div>

    </div>
    <div id="main">
      <div id="anim"></div>
      <div id="phone"></div>
    </div>
  </body>
</html>
4

2 回答 2

3

我的猜测是其中一个 css 文件没有被拉入。我在这里创建了一个小提琴,我遗漏了kendo.common.min.css,结果与你的不完全相同,但太接近了。

http://jsfiddle.net/B4dW​​B/

检查您的 css 引用并确保它们都正确并已加载。

于 2011-09-30T22:21:18.193 回答
0

验证一切是否正确加载的最简单方法是使用浏览器开发人员工具(Firefox 中的 Firebug,Chrome/Safari 中的开发人员工具)。

在网络选项卡上,您应该能够查看是否从远程服务器正确加载了 Kendo UI CSS 和 JavaScript 文件。(这也是确保您没有看到页面/资源的缓存版本的好时机。这始终是一个简单的浏览器调试问题。)

一般来说,由于Kendo UI在浏览器中运行,因此您的托管环境和 Web 服务器应该没有影响。只要文件到达浏览器,渲染和行为就应该正常运行。

于 2011-09-30T22:46:43.390 回答