不能在手机上的“范围按钮”上使用onmousemove,有啥可以用相同的功能代替它吗?

Posted

技术标签:

【中文标题】不能在手机上的“范围按钮”上使用onmousemove,有啥可以用相同的功能代替它吗?【英文标题】:can't use onmousemove on 'range button' on mobile phone, anything to replace it with the same function?不能在手机上的“范围按钮”上使用onmousemove,有什么可以用相同的功能代替它吗? 【发布时间】:2021-10-10 22:26:36 【问题描述】:

我正在使用 'onmousemove=incfont()' 将按钮连接到下面的 javascript

<html>
    <div class="wrapper-fontsize">
        <div class="fontChanger">
        <span></span>
        <span>
          8 &nbsp;
          <input type="range" onmousemove="incfont();" id="fontsize" min="8" max="36" value="16" style="width: 80%;" /> 
          &nbsp; 36
        </span>
        <label style="display: block !important;">
          Font Size : 
          <span id="size">16</span>
        </label>
      </div>
    </div>
</html>

<script>
// ====== Font Resizer ======
    var size;
    var save = localStorage.getItem('fontChange', size);

    if (localStorage.getItem('fontChange')) 
      var x = document.getElementById('novel-content');
      x.style.fontSize = save + "px";
      document.getElementById('size').innerHTML = save;
      document.getElementById('fontsize').value = save;
     

    function incfont() 
      var t = document.getElementById('fontsize').value;
      var x = document.getElementById('novel-content');
      x.style.fontSize = t + "px";
      size = t;
      document.getElementById('size').innerHTML = size;
      localStorage.setItem('fontChange', size);
    

// ====== Open-Close The Tool ======

    const closeFontChange = document.querySelector(".wrapper-fontsize");

    function openFontChanger() 
      closeFontChange.classList.add("active");
    

    closeFontChange.addEventListener("click", function () 
      closeFontChange.classList.remove("active");
    );
</script>

然后:

    我在桌面上试了一下,拖动时文本可以正确更改其字体大小。 然后我在手机上的chrome上试了一下。然后有一个错误,无论我对范围按钮做什么,字体大小都不想改变(按照 javascript) 起初我认为这完全是因为我的手机版本(6.0 marshmallow)所以我使用 chrome 'inspect element' 通过设备视线(ctrl + shift + M)运行网络。然后第二个问题就发生了。 问题不在于本地存储。幸运的是,本地存储在台式机或移动设备上都能很好地工作。本地存储可以保存变量号并用它启动函数。

到目前为止,我假设手机无法接受“onmausemove”功能。那么如果是真的,有什么东西可以用同样的功能代替吗?

【问题讨论】:

问题太多了。似乎所有问题都可以清楚地回答,但我希望您可以一问一答。 【参考方案1】:

一切都很简单,但也许我必须改变它的结构。由于我不能使用“onmausemove”,所以只需使用另一种方式,如 onclick,但功能相同。这里:

let ids = ["#content"];

// ====== Font Change ======

function changeFontSize(type) 
ids.forEach(id => 
    let el = document.querySelector(id);
    let fontSize = window.getComputedStyle(el, null).getPropertyValue("font-size");
    fontSize = parseFloat(fontSize);
    if(type === "increase" & fontSize < 24)
        el.style.fontSize = (fontSize + 2) + "px";
    else if (type === "decrease" & fontSize > 12)
        el.style.fontSize = (fontSize - 2) + "px";
    
    var rest = window.getComputedStyle(el, null).getPropertyValue("font-size");
    var size = rest.replace('px', '');
document.getElementById('size').innerHTML = size;
)
body 
            background: #d8d8d8;
        

        .wrapper 
            background: #fff;
            padding: 4px 16px;
            border-radius: 10px;
            display: flex;
            flex-direction: column;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            margin-bottom: 8px;
        

        .wrapper p, .wrapper h1 
            color: #000;
            text-align: justify;
            line-height: 2;
            font-family: 'Georgia', sans-serif;
            margin: 0;
            margin-bottom: 0.8em;
        

        .wrapper p 
            font-size: inherit;
        

        .wrapper h1 
            font-size: 28px;
        

        button 
            background: transparent;
            padding: 4px 20px;
            display: inline-block;
            font-size: 16px;
            cursor: pointer;
            border: none;
            border: 1px solid #000;
            transition: all .3s ease;
            user-select: none;
            cursor: pointer;
        

        button:hover 
            background: #1f1d34;
            color: #fff;
        
<div class="post-wrapper" style="filter: brightness(100%);">
    <div class="wrapper" id="content">
        <h1>Lorem ipsum</h1>
        <p>
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Officiis accusamus debitis possimus magni, ab explicabo laboriosam nesciunt quisquam expedita consequatur ut deserunt suscipit, voluptatibus, excepturi maiores quasi modi similique ad.
        </p>

        <p>
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Officiis accusamus debitis possimus magni, ab explicabo laboriosam nesciunt quisquam expedita consequatur ut deserunt suscipit, voluptatibus, excepturi maiores quasi modi similique ad.
        </p>

        <p>
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Officiis accusamus debitis possimus magni, ab explicabo laboriosam nesciunt quisquam expedita consequatur ut deserunt suscipit, voluptatibus, excepturi maiores quasi modi similique ad.
        </p>
    </div>
</div>

<div class="wrapper-fontsize">
    <div class="fontChanger">
        <h4>Font Size</h4>
        <button onclick="changeFontSize('decrease')">A-</button>
            <span id="size">16</span>
        <button onclick="changeFontSize('increase')">A+</button>
    </div>
</div>

【讨论】:

以上是关于不能在手机上的“范围按钮”上使用onmousemove,有啥可以用相同的功能代替它吗?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何从 ListView 中进行多选?我看到它可以在桌面上运行,但不能在手机上运行

求前端大神帮忙,vue项目,修改了index.js ,的host:'192.168.1.101 ',之后,不能在手机上预览,

chm文件在手机上显示乱码,怎么破?

怎么在手机上画一个图,不管啥界面都关不了

opencv图像处理之在手机上实现背景虚化

Unity使用Remote直接在手机上调试游戏