引入mui.js报错 删除严格模式 mui滑动组件无效 scroll组件报错

2019年12月14日 亲测有效

一: 引入js文件报错

报错信息

Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions

在这里插入图片描述
报错原因:
webpack打包时使用的严格模式打包,而mui.js内部使用了'caller', 'callee', and 'arguments',两者冲突.
解决方案(删除严格模式)
1.安装包

cnpm i @babel/plugin-transform-modules-commonjs @babel/plugin-transform-strict-mode -D

2.在配置babel-loader中配置

plugins: [
    ["@babel/plugin-transform-modules-commonjs", { "strictMode": false }]
],

如果有很多个plugins要写在最后,例如:(此代码中其他配置不要求 仅供全面参考)

                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env'],
                        "plugins": [
                            "@babel/plugin-transform-runtime",
                            ["@babel/plugin-transform-modules-commonjs", { "strictMode": false }]
                        ]
                    }
                }

到此完美解决

二 使用mui的scroll组件,各种填坑,解决报错

效果是区域滚动 ,鼠标按下不松 区域向左或向右滑动

<template>
    <div>
        <div id="slider" class="mui-slider mui-fullscreen">
            <div id="sliderSegmentedControl" class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
                <div class="mui-scroll">
                    <a class="mui-control-item mui-active" href="#item1mobile" data-wid="tab-top-subpage-1.html">
                        推荐
                    </a>
                    <a class="mui-control-item" href="#item2mobile" data-wid="tab-top-subpage-2.html">
                        热点
                    </a>
                    <a class="mui-control-item" href="#item3mobile" data-wid="tab-top-subpage-3.html">
                        北京
                    </a>
                    <a class="mui-control-item" href="#item4mobile" data-wid="tab-top-subpage-4.html">
                        社会
                    </a>
                    <a class="mui-control-item" href="#item5mobile" data-wid="tab-top-subpage-5.html">
                        娱乐
                    </a>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
	//1.引入js文件,路径根据个人需求修改
    import mui from '../lib/mui/js/mui.js';
    //2.初始化滑动控件
    mui('.mui-scroll-wrapper').scroll({
        deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0005
    });
</script>

坑一: 展示效果混乱
在这里插入图片描述
报错原因:设置了类 全屏展示
解决方案:删除类mui-fullscreen
坑二: 第一次打开页面 无效果 刷新就有效果了
原因: 初始化控件的时机不对

  • 初始化滑动控件,是将类选择器.mui-scroll-wrapper交给mui,mui根据选择器获取到dom元素,再进行scroll()初始化,然而我们之前的写法是在组件还没挂载到页面就初始化了,没挂载到页面是获取不到dom元素的,所以不起这时候操作没有意义.

解决方案:

  • 将初始化控件代码放到mounted函数中,表示组件放到页面上后才能初始化滑动条
  • mounted函数:当组件中的dom结构渲染好且已经挂载到页面上后,会执行这个生命周期函数
  • 要操作元素最早也要在mounted中操作,这时候的元素是最新的,也是第一时间能获取到的.
 mui('.mui-scroll-wrapper').scroll({
        deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0005
    });

坑三: 若有用底部tabbar选项卡,会发现当滑动条能滑动时,底部选项卡无法点击跳转 报错

[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See

在这里插入图片描述
在这里插入图片描述
原因:
选项卡的类mui-tab-item和引入的js冲突
解决方案:
将此类和类下面包含的元素,所有和此类牵扯的样式自己通过检查复制其样式,然后重新定义新的类名,解决冲突.

坑四: 滑动时报错,对效果不影响可不管,如果看着烦就在style中加样式

[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See

在这里插入图片描述
加此样式

<style scoped>
    *{
        touch-action: pan-y;
    }
</style>

原因:是谷歌浏览器为了提高页面滑动流畅度而折腾出来的东西,如果换成其他浏览器可能不会出现此警告.
CSS 属性 touch-action介绍:

  • 用于指定某个给定的区域是否允许用户操作,以及如何响应用户操作(比如浏览器自带的划动、缩放等)。
  • pan-y表示启用单指垂直平移手势,即如果纵向滑动在谷歌浏览器中可以提高滑动流畅度,如果pan-x表明横向提高滑动流畅度,两个值都可以随便用,只要不出警告就行.

坑五: 能左右滑动时 自身选项点击无法跳转,例"热点","北京"点击无效
解决方案:不通过router-link跳转,通过vue router官方提供的编程式导航跳转
如果不懂编程式导航的可见我博文https://blog.csdn.net/weixin_45842655/article/details/103554428

坑六: 电脑上通过谷歌浏览器调试都能正常使用了,但是在手机上调试时发现自身选项点击无法跳转
解决方案:mui官方提供了一个tap事件 和click类似 可以解决此问题(仅mui的组件能用),把@click改成@tap即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: html mui.min.js 扫描是指在使用 HTML 页面时,通过引入 mui.min.js 文件来进行扫描相关的操作。 mui.min.js 是一款基于 HTML5 和 CSS3 的移动端前端框框架,它提供了许多可以用于开发移动端应用的功能和组件,其中包括扫描的功能。 通过在 HTML 页面中引入 mui.min.js 文件,我们可以使用该框架提供的扫描功能来实现在移动设备上的二维码和条形码的扫描。 使用 mui.min.js 进行扫描可以分为以下几个步骤: 1. 引入 mui.min.js 文件:在 HTML 页面的合适位置,使用 <script> 标签引入 mui.min.js 文件。 2. 创建扫描容器:在 HTML 中,通过创建一个具有特定样式的元素,作为扫描的容器。可以使用 <div> 标签,并设置一个特定的 ID,便于之后的 JavaScript 代码中定位。 3. 初始化扫描:在 JavaScript 代码中,使用 mui.init() 初始化 mui 框架,使其可以使用扫描功能。然后使用 mui.plusReady() 来确保设备就绪。 4. 打开扫描界面:通过调用 mui.openScanner() 函数,打开扫描界面。可以传入一些配置参数,如扫描成功后的回调函数、扫描框的样式、扫描线的样式等。 5. 处理扫描结果:在扫描成功后,会调用之前传入的回调函数,可以在回调函数中对扫描结果进行处理,如解析二维码内容、展示结果等。 以上就是使用 mui.min.js 进行扫描的基本步骤和流程。通过引入 mui.min.js 文件,并按照上述步骤进行操作,我们可以实现在 HTML 页面中对二维码和条形码的扫描功能。 ### 回答2: HTML MUI.min.js是一种用于扫描的工具。MUI是Mobile UI的缩写,是一套用于移动端开发的界面框架,而MUI.min.jsMUI框架的核心JS文件之一。 在使用MUI.min.js进行扫描时,我们可以利用其提供的方法和功能实现各种扫描操作。这些操作可以包括二维码扫描、条形码扫描、文档扫描等等。MUI.min.js提供了丰富的API供开发者使用,使得扫描过程变得简单易用。 对于二维码扫描,我们可以使用MUI.min.js提供的相机API来打开设备的摄像头进行扫描。扫描结果会以回调函数的形式返回,开发者可以根据需求来处理结果。 条形码扫描类似,我们同样使用MUI.min.js提供的相机API来打开摄像头进行扫描。扫描结果以回调函数的形式返回,可以根据结果制定相应的业务逻辑。 除了二维码和条形码扫描,MUI.min.js还可以用于实现文档扫描。我们可以使用MUI.min.js提供的图像处理API,通过调用设备的摄像头来捕获照片,然后进行图像处理,识别文字或者保存成文件等。 总体而言,HTML MUI.min.js扫描提供了一种简单方便的途径来实现扫描功能。无论是二维码、条形码还是文档扫描,我们都可以通过使用MUI.min.js提供的API来轻松完成,使得移动端开发中的扫描过程更加高效和便捷。 ### 回答3: HTML中使用mui.min.js进行扫描的步骤如下: 1. 首先,在HTML文件中引入mui.min.js文件。可以通过以下代码将其导入到HTML的`<head>`标签中: ```html <script src="mui.min.js"></script> ``` 2. 在需要进行扫描的元素上添加相应的扫描功能。例如,如果想要给一个按钮添加扫描功能,可以在HTML中找到该按钮的元素,并添加相应的扫描属性。例如: ```html <button id="scanBtn" data-mui-input-clear="true" data-mui-input-placeholder="请扫描二维码">扫描</button> ``` 这里使用了`data-mui-input-clear`属性来清除输入框的内容,`data-mui-input-placeholder`属性用来设置输入框的提示信息。 3. 接下来,在JavaScript文件中初始化扫描功能。可以在页面加载完成后执行以下代码: ```javascript document.addEventListener('DOMContentLoaded', function() { document.getElementById('scanBtn').addEventListener('tap', function() { mui.scanQRCode(function(result) { // 扫描成功后的回调函数 alert('扫描结果:' + result); }, function(error) { // 扫描失败后的回调函数 alert('扫描失败:' + error); }); }); }); ``` 这里使用了`addEventListener`函数来添加点击事件监听,当按钮被点击时,调用`mui.scanQRCode`函数进行扫描操作。`scanQRCode`函数接受两个回调函数作为参数,第一个回调函数处理扫描成功后的操作,第二个回调函数处理扫描失败后的操作。 以上就是使用mui.min.js进行扫描的简要步骤。具体的扫描功能和UI效果可以根据具体需求进行自定义和修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值