javascript – 更改’src’属性后图像未刷新

我想从菜单中选择另一个项目后刷新图像:

<html>
  <head>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <script>

    $(function() {
      $( "#selectable" ).selectable({
        stop: function() {
          $( ".ui-selected", this ).each(function() {
            // Works on FF; doesn't work on Chrome and IE
            d = new Date();
            $("#chart_image").prop("src", this.id + "?" + d.getTime());
          });
        }
      });
    });

    $(function() {
      // Selects the first <li> element
      $( "#selectable" ).selectable().children().first().addClass('ui-selected');
    });

    </script>

  </head>
  <body>
    <?php

      header('Cache-Control: no-cache, no-store, must-revalidate');
      header('Pragma: no-cache');
      header('Expires: 0');

      $dirname = "charts/";
      $images = glob($dirname."*.svg");

      echo '<ol id="selectable">';
      foreach($images as $image) {
        echo '<li class="ui-widget-content" id="'.$image.'">'.basename($image, ".svg").'</li>';
      }
      echo '</ol>';

      echo '<figure><embed id="chart_image" type="image/svg+xml" src="'.$images[0].'"></embed></figure>';
    ?>
  </body>
</html>

上面的代码适用于FF.但是,在Chrome和IE上,选择不同的菜单项后没有任何反应.我尝试了将当前时间戳附加到文件末尾的技巧.我也试过缓存标题 – 没有结果.

谢谢!

最佳答案 因此,问题似乎是嵌入类型type =“image / svg xml”Firefox似乎支持svgs和普通图像,如jpg,gif等,而其他浏览器则不支持.因此,使其适用于所有浏览器的一种方法是将类型更改为type =“image / jpeg”,只要该图像不是svg即可.如果您的所有图像都是svg类型,则使用type =“image / svg xml”.处理此问题的另一种方法是简单地跳过type属性或使用img标记.

我也有:

>删除了可选择的双重初始化
>删除.each(),因为您将最后选择的ID设置为嵌入源是不必要的

看一下below code,我使用的是type =“image / jpeg,它适用于Chrome / FF / Safri等.

$(function() {
    $( "#selectable" ).selectable({
        stop: function() {
            $("#chart_image").attr({
                "src": $( ".ui-selected", this )[0].id
            });
        }
    })
    .children().first().addClass('ui-selected');
});
  #feedback { font-size: 1.4em; }
  #selectable .ui-selecting { background: #FECA40; }
  #selectable .ui-selected { background: #F39814; color: white; }
  #selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
  #selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">

<ol id="selectable">
  <li class="ui-widget-content" id="https://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Blue_morpho_butterfly.jpg/531px-Blue_morpho_butterfly.jpg">Item 1</li>
  <li class="ui-widget-content" id="http://www.potentash.com/wp-content/uploads/2013/03/butterfly.jpg">Item 2</li>
  <li class="ui-widget-content" id="http://smwv.org/wp-content/uploads/2013/11/blue-butterfly2.png">Item 3</li>
</ol>
    
<figure><embed id="chart_image" type="image/jpeg" src="http://smwv.org/wp-content/uploads/2013/11/blue-butterfly2.png" /></figure>
点赞