为什么这个JavaScript css过滤器代码在Firefox中有效但在Chrome中无效?

时间:2017-04-26 10:29:20

标签: javascript css google-chrome firefox

过滤器在Firefox(43.0.1)中协同工作,但在Chrome(57.0.2987.133)中则不然。在Chrome中,当我将鼠标移到另一个滑块上时,会删除之前的滑块调整。有关图像过滤器的类似问题,但它确实适用于Firefox与Chrome问题。



var degrees=0;
var percentB=100;
var percentC=100;
function setValues() {
  form1.brightness.value=100;
  form1.contrast.value=100;
  form1.hue.value=0;
}

function bright() {
  percentB=form1.brightness.value;
  document.getElementById("I").style.filter="brightness("+parseInt(percentB)+"%)"+" contrast("+parseInt(percentC)+"%)"+" hue-rotate("+parseInt(degrees)+"deg)";
}

function cont() {
  percentC=form1.contrast.value;
  document.getElementById("I").style.filter="brightness("+parseInt(percentB)+"%)"+" contrast("+parseInt(percentC)+"%)"+" hue-rotate("+parseInt(degrees)+"deg)";
}

function hues() {
  degrees=form1.hue.value;
  document.getElementById("I").style.filter="brightness("+parseInt(percentB)+"%)"+" contrast("+parseInt(percentC)+"%)"+" hue-rotate("+parseInt(degrees)+"deg)";
}

<img src="xbutterfly.jpg" alt="Colorful Flowers" width="800" height="533" id="I" /><br><br>

<form name="form1" id="form1id" style="font-size:90%; text-align:center;">
  Brightness: <input type="range" name="brightness" min="0" max="200" step="5" onmousemove="bright()" style="vertical-align:-7px;" />&nbsp; &nbsp; Contrast: <input type="range" name="contrast" min="0" max="200" step="5" onmousemove="cont()" style="vertical-align:-7px;"
  />&nbsp; &nbsp; Hue: <input type="range" name="hue" min="0" max="360" step="5" onmousemove="hues()" style="vertical-align:-7px;" />
</form>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

经过2个小时的斗争,我在发布问题后终于看到了一个解决方案:将所有内容组合成一个功能。

新HTML:

   <img src="xbutterfly.jpg" alt="Colorful Flowers" width="800" height="533" id="I" /><br><br>  
   <form name="form1" id="form1id" style="font-size:90%; text-align:center;">
    Brightness: <input type="range" name="brightness" min="0" max="200" step="5" onmousemove="apply()" style="vertical-align:-7px;" />&nbsp; &nbsp;
    Contrast: <input type="range" name="contrast" min="0" max="200" step="5" onmousemove="apply()" style="vertical-align:-7px;"/>&nbsp; &nbsp;
    Hue: <input type="range" name="hue" min="0" max="360" step="5" onmousemove="apply()" style="vertical-align:-7px;"/> 
   </form>

新JavaScript:

  <script type="text/javascript">
  <!--

  var degrees = 0;
  var percentB = 100; 
  var percentC = 100;

  function setValues()
  {      
    form1.brightness.value = 100;
    form1.contrast.value = 100;
    form1.hue.value = 0;      
  }

  function apply()
  { 
    degrees = form1.hue.value;
    percentC = form1.contrast.value;
    percentB = form1.brightness.value;  
    document.getElementById("I").style.filter = "brightness(" + parseInt(percentB) + "%)" + " contrast(" + parseInt(percentC) + "%)" + " hue-rotate(" + parseInt(degrees) + "deg)";   
    document.getElementById("I").style.WebkitFilter = "brightness(" + parseInt(percentB) + "%)" + " contrast(" + parseInt(percentC) + "%)" + " hue-rotate(" + parseInt(degrees) + "deg)"; // Not tested as I don't have these browsers. Used for older versions of Safari, Chrome, and Opera per https://www.w3schools.com/jsref/prop_style_filter.asp  
  }

  --> 
  </script>