精华内容
下载资源
问答
  •  为什么要随时监测屏幕大小,这是因为我们在手机端的时候,常常会遇到这样的问题:当点击输入框的时候,手机的键盘就会自动浮现,它会使得页面的可视示高度(document.body.clientHeight)发生变化。而我们的输入框...

    为什么?  

      为什么要随时监测屏幕大小,这是因为我们在手机端的时候,常常会遇到这样的问题:当点击输入框的时候,手机的键盘就会自动浮现,它会使得页面的可视示高度(document.body.clientHeight)发生变化。而我们的输入框就被可怜的遮挡在小键盘后面

     

    怎么办?

      我们不知道小键盘何时会出现,但有一点是可以确定的,当小键盘出现的时候,body的可视区域一定为发生变化!!当我们检测到页面的可视高度发生了变化,我们就可以确定手机的键盘出来了。于是我们就可以使用document.getElementById('×××××').scrollIntoView();把被小键盘遮挡住的输入框给上移到可视区域。

     

    Ps:结合scrollIntoView()使用的还有activeElement当我们页面有多个input输入框时,我们可以使用HTML5的辅助管理DOM功能,document.activeElement属性始终会引用DOM当前获得的焦点元素。可以获得当前用户焦点的元素。

    document.activeElement.scrollIntoView();
    

     

     

    监测手机小键盘弹出代码:

    window.onresize = () => {
        // 注意,return返回的函数为立即执行函数!!
        return (() => {
            window.screenHeight = document.body.clientHeight;
            this.showHeight = window.screenHeight;
        })()
    }

     

    当我拿到showHeight,在vue里,我就可以通过watch他的变化,然后再执行相应的逻辑代码,使用Vue.js完整代码如下:

    data() {
        return {
            // 默认屏幕高度
            docmHeight: document.documentElement.clientHeight,
            showHeight: document.documentElement.clientHeight,
        }
    // 渲染后执行
    mounted() {
        window.onresize = () => {
            return (() => {
                window.screenHeight = document.body.clientHeight;
                this.showHeight = window.screenHeight;
            })()
        }
    },
    watch: {
        showHeight: 'inputType',
    },
    methods: {
        // 检测屏幕高度变化
        inputType() {
             if (!this.timer) {
                 this.timer = true
                 let that = this
                 setTimeout(() => {
                     if (that.docmHeight > that.showHeight) { 
                         that.inputfile = false;
                         if (document.activeElement.className === 'weui-textarea') {
                             document.getElementById('applyNote').scrollIntoView(); // 输入框的id为applyNote,class为weui-textarea
                         }
                     } else if (that.docmHeight <= that.showHeight) {
                         that.inputfile = true;
                     }
                     that.timer = false;
                 }, 20)
            }
        }
    }

    转载于:https://www.cnblogs.com/pengshengguang/p/7765079.html

    展开全文
  • 如:“温度:35℃,噪音:53分贝,PM2.5:73ug/m3,PM10:81ug/m3……”工程项目工地中一块大屏幕上的实时数据,下一秒钟,这些数据就根据现场情况发生了变化。数据监测软件,能24小时实时反映施工工地中PM2.5、PM10...

    数据监测系统-建筑数据监测软件系统解决方案

      建筑数据监测系统通过建工地视频监控和在线数据监测系统实时了解工地现场情况。工作人员可在装有专用APP的移动终端上实时察看了解施工现场情况。如:“温度:35℃,噪音:53分贝,PM2.5:73ug/m3,PM10:81ug/m3……”工程项目工地中一块大屏幕上的实时数据,下一秒钟,这些数据就根据现场情况发生了变化。数据监测软件,能24小时实时反映施工工地中PM2.5、PM10、温度、湿度等数据。

     

      建筑数据监测系统能实时在线监测扬尘状况,当监测系统发现空气中的PM10超标时,便会先预警数据监测系统专家表示,整个建筑数据监测系统包括环境在线监测模块、数据采集模块、数据传输模块、软件控制系统等几个部分。互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一伍扒中间的是壹壹三三最后的是泗柒泗泗,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。

      “环境在线检测仪上的PM10一旦超标,就会自动启动单处或者多处喷淋设备,将粉尘降到最少。”而数据采集模块和数据传输模块则可以将施工现场实时环境数据及喷淋降尘设备的开闭状态,进行动态采集并传输到,也可以将相关数据传输到建筑公司。

      为加强施工现场扬尘管治,市住建委全面督促城区建筑工地落实洒水喷雾、防尘覆盖等措施,对不符合规定的工地严格实行停工整改。“以前使用的监控手段是靠人力一个场所一个场所去巡查,随着近年来全市在建工程项目越来越多,工地分布范围越来越广,原来的巡查方式不仅难以全覆盖,也缺乏时效性。”

      同时要求建筑面积达5万平方米及以上,或施工周期不少于2年的工程,在施工期间应当实施扬尘在线数据监测并联网至平台。无需亲自到现场,监督员坐在电脑前就能通过数据监测显示屏直接看到在建工地的现场情况,这要多亏了这套有着“数据可视化”功能的视频监测系统平台。监督员通过监控屏可以同对工地的现场情况及实时数据全都一目了然。监控中心的监测系统对回传数据进行快速处理,对PM2.5、PM10超过预定数值的建筑工地进行实时报警,真正实现了对在建工地的精准监测、精准管理、精准监督。

      “我们给所有数据设定一个警戒值,分为正常、预警、报警三级,分别用绿色、橙色、红色三色表示。”一旦这些数据超过所设定的数值并持续30分钟,系统会自动将报警信息转发给责任监管人员,监管人员立即对工地现场采取处理行动。若超过两个小时没有处理,系统会自动添加不良行为记录并反馈到建筑单位的诚信管理系统中。也就是说,该监控装置可实时查看掌握建设工地治安、安全文明施工、停工整改等情况。

    展开全文
  • 用c++的fmc编写的监测鼠标形状变化的程序,只能在鼠标移动到运行窗口时,才能监测到鼠标的变化,鼠标移除窗口时,就检测不到鼠标的变化了,请大家给个程序,使用FMC能监测屏幕的鼠标形状的变化。谢谢
  • android press 事件监测

    千次阅读 2012-09-05 16:43:13
    在Android的触摸消息中,已经实现了三种监测,它们分别是   1)pre-pressed:对应的语义是用户轻触(tap)了屏幕       2)pressed:对应的语义是用户点击(press)了屏幕   3)long pressed:对应的...

    在Android的触摸消息中,已经实现了三种监测,它们分别是
     
    1)pre-pressed:对应的语义是用户轻触(tap)了屏幕

     


     

     


    2)pressed:对应的语义是用户点击(press)了屏幕
     
    3)long pressed:对应的语义是用户长按(long press)了屏幕
     
    下图是触摸消息随时间变化的时间轴示意图:
     

     

    其中,t0和t1定义在ViewConfiguration类中,标识了tap和longpress的超时时间,定义如下:
     
    1./**
    2. * Defines the duration in milliseconds we will wait to see if a touch event 
    3. * is a tap or a scroll. If the user does not move within this interval, it is
    4. * considered to be a tap. 
    5. */ 
    6.private static final int TAP_TIMEOUT = 115; // t0  
    7. 
    8./** 
    9. * Defines the duration in milliseconds before a press turns into
    10. * a long press
    11. */ 
    12.private static final int LONG_PRESS_TIMEOUT = 500; // t1 
    代码中实现监测的地方在View类的OnTouchEvent函数中,当View监测到ACTION_DOWN事件时,首先发送一个延迟为t0的异步消息,代码如下:
     1.case MotionEvent.ACTION_DOWN: 
    2.    if (mPendingCheckForTap == null) { 
    3.        mPendingCheckForTap = new CheckForTap(); 
    4.    } 
    5.    mPrivateFlags |= PREPRESSED; 
    6.    mHasPerformedLongPress = false; 
    7.    postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout()); 
    8.    break; 
    如果在t0时间内用户释放了屏幕,即ACTION_UP事件在t0时间内发生,则本次触摸对应的是pre-pressed处理代码,语义是"用户轻触(TAP)了一下屏幕";如果用户在t1时间内释放了屏幕,那么本次操作是一个"press"操作;如果用户超过t1时间释放屏幕,则系统认为监测到了长按事件。其中处理"press"操作的代码在类CheckForTap类中,处理长按操作的代码在类CheckForLongPress类中。而处理pre-pressed的代码在ACTION_UP事件响应中,ACTION_UP事件响应中大部分代码用于处理触摸的状态变化,如下所示:
     1.case MotionEvent.ACTION_UP: 
    2.    boolean prepressed = (mPrivateFlags & PREPRESSED) != 0; //获取prepressed状态  
    3.    if ((mPrivateFlags & PRESSED) != 0 || prepressed) { //如果是pressed状态或者是prepressed状态,才进行处理  
    4.        // 如果当前view不具有焦点,则需要先获取焦点,因为我们当前处理触摸模式  
    5.        boolean focusTaken = false; 
    6.        if (isFocusable() && isFocusableInTouchMode() && !isFocused()) { 
    7.            focusTaken = requestFocus(); // 请求获得焦点  
    8.        } 
    9. 
    10.        if (!mHasPerformedLongPress) { // 是否处理过长按操作了,如果是,则直接返回  
    11.            // 进入该代码段,说明这是一个tap操作,首先移除长按回调操作  
    12.            removeLongPressCallback();  
    13. 
    14.            // Only perform take click actions if we were in the pressed state  
    15.            if (!focusTaken) { 
    16.                // Use a Runnable and post this rather than calling  
    17.                // performClick directly. This lets other visual state  
    18.                // of the view update before click actions start.  
    19.                if (mPerformClick == null) { 
    20.                    mPerformClick = new PerformClick(); 
    21.                } 
    22.                if (!post(mPerformClick)) { 
    23.                    performClick(); // 执行点击的处理函数  
    24.                } 
    25.            } 
    26.        } 
    27. 
    28.        if (mUnsetPressedState == null) { 
    29.            mUnsetPressedState = new UnsetPressedState(); 
    30.        } 
    31. 
    32.        if (prepressed) { 
    33.            mPrivateFlags |= PRESSED; 
    34.            refreshDrawableState(); 
    35.            // 发送重置触摸状态的异步延迟消息  
    36.            postDelayed(mUnsetPressedState, 
    37.                    ViewConfiguration.getPressedStateDuration()); 
    38.        } else if (!post(mUnsetPressedState)) { 
    39.            // If the post failed, unpress right now  
    40.            mUnsetPressedState.run(); 
    41.        } 
    42.        removeTapCallback(); // 移除tap的回调操作  
    43.    } 
    44.    break; 
    在上面的代码分析中,可以看出,整个监测过程涉及到两个Runnable对象和一个利用Handler发送异步延迟消息的函数,下面就来分析一下:
     


    1)PostDelayed函数
     
    该函数的主要工作是获取UI线程的Handler对象,然后调用Handler类的postDelayed函数将指定的Runnable对象放到消息队列中。
     
    1.public boolean postDelayed(Runnable action, long delayMillis) { 
    2.    Handler handler; 
    3.    if (mAttachInfo != null) { 
    4.        handler = mAttachInfo.mHandler; 
    5.    } else { 
    6.        // Assume that post will succeed later  
    7.        ViewRoot.getRunQueue().postDelayed(action, delayMillis); 
    8.        return true; 
    9.    } 
    10. 
    11.    return handler.postDelayed(action, delayMillis); 
    12.} 
    2)CheckForTap类
    该类实现了Runnable接口,在run函数中设置触摸标识,并刷新Drawable的状态,同时用于发送一个检测长按事件的异步延迟消息,代码如下:
     
    1.private final class CheckForTap implements Runnable { 
    2.    public void run() { 
    3.        // 进入该函数,说明已经过了ViewConfiguration.getTapTimeout()时间,  
    4.        // 即pre-pressed状态结束,宣告触摸进入pressed状态  
    5.        mPrivateFlags &= ~PREPRESSED;  
    6.        mPrivateFlags |= PRESSED; 
    7.        refreshDrawableState(); // 刷新控件的背景Drawable  
    8.        // 如果长按检测没有被去使能,则发送一个检测长按事件的异步延迟消息  
    9.        if ((mViewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) { 
    10.            postCheckForLongClick(ViewConfiguration.getTapTimeout()); 
    11.        } 
    12.    } 
    13.} 
    14. 
    15.private void postCheckForLongClick(int delayOffset) { 
    16.    mHasPerformedLongPress = false; 
    17. 
    18.    // 实例化CheckForLongPress对象  
    19.    if (mPendingCheckForLongPress == null) { 
    20.        mPendingCheckForLongPress = new CheckForLongPress(); 
    21.    } 
    22.    mPendingCheckForLongPress.rememberWindowAttachCount(); 
    23.    // 调用PostDelayed函数发送长按事件的异步延迟消息  
    24.    postDelayed(mPendingCheckForLongPress, 
    25.            ViewConfiguration.getLongPressTimeout() - delayOffset); 
    26.} 
     
    3)CheckForLongPress类
     
    该类定义了长按操作发生时的响应处理,同样实现了Runnable接口
     
    1.class CheckForLongPress implements Runnable { 
    2. 
    3.    private int mOriginalWindowAttachCount; 
    4. 
    5.    public void run() { 
    6.        // 进入该函数,说明检测到了长按操作  
    7.        if (isPressed() && (mParent != null) 
    8.                && mOriginalWindowAttachCount == mWindowAttachCount) { 
    9.            if (performLongClick()) {  
    10.                mHasPerformedLongPress = true; 
    11.            } 
    12.        } 
    13.    } 
    14. 
    15.    public void rememberWindowAttachCount() { 
    16.        mOriginalWindowAttachCount = mWindowAttachCount; 
    17.    } 
    18.} 
    19. 
    20.public boolean performLongClick() { 
    21.    sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED); 
    22. 
    23.    boolean handled = false; 
    24.    if (mOnLongClickListener != null) { 
    25.        // 回调用户实现的长按操作监听函数(OnLongClickListener)  
    26.        handled = mOnLongClickListener.onLongClick(View.this); 
    27.    } 
    28.    if (!handled) { 
    29.        // 如果OnLongClickListener的onLongClick返回false  
    30.        // 则需要继续处理该长按事件,这里是显示上下文菜单  
    31.        handled = showContextMenu(); 
    32.    } 
    33.    if (handled) { 
    34.        // 长按操作事件被处理了,此时应该给用户触觉上的反馈  
    35.        performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); 
    36.    } 
    37.    return handled; 
    38.} 

    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-08/67979.htm

    展开全文
  • 手头一个项目,需要对屏幕分辨率进行检测,同时对窗口大小改变进行监测,窗口大小改变则css样式跟随变化。又是坑爹的IE不遵守游戏规则,要兼容ie系列,还得做多方面的兼容性处理。  以下是找到的获取窗口大小的...

    var w=document.documentElement.clientWidth;
          var h=document.documentElement.clientHeight;
          alert(w+" "+h);

    在控制台上输入如上语句即可



     document.documentElement.clientWidth 和 document.documentElement.clientHeight 是获取浏览器当前窗口视图区域(也就是说不包括工具栏、滚动条等)的实际宽高(旧的HTML标准是写作document.body.clientWidth/clientHeight,已过时,建议大家用新标准来描述):



    手头一个项目,需要对屏幕分辨率进行检测,同时对窗口大小改变进行监测,窗口大小改变则css样式跟随变化。又是坑爹的IE不遵守游戏规则,要兼容ie系列,还得做多方面的兼容性处理。

        以下是找到的获取窗口大小的一些知识点:

        1、 Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。 

        2、 Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示 HTML文档的根节点。 

        3、document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。

        一、获取窗口大小,直接上代码:

    var winWidth = 0;
    var winHeight = 0;
    function findDimensions()
    if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)
    {
    winHeight = document.documentElement.clientHeight;
    winWidth = document.documentElement.clientWidth;
    }
    return {
    'width': winHeight,
    'height': winWidth
    };
    }

        二、获取屏幕分辨率

        screen对象即可直接获取到当前显示器的分辨率

        分辨率宽:screen.width

        分辨率高:screen.height 

     客户区大小

        我们可以如此编码获取其客户区的大小:

    function getViewport() {
    	if (document.compatMode == "BackCompat") {
    		return {
    			width: document.body.clientWidth,
    			height: document.body.clientHeight
    		};
    	} else {
    		return {
    			width: document.documentElement.clientWidth,
    			height: document.documentElement.clientHeight
    		};
    	}
    }



    展开全文
  • iOS屏幕旋转总结

    2016-05-04 17:00:00
    一、屏幕旋转检测方法 ... 2 * 当手机屏幕发生左右横屏变化时,我们需根据此时的设备方向做出相应的调整 3 * 例如,在ViewController中,我们需要监控手机屏幕是否转动了,需要在通知中心中注册通知 4 */ ...
  • vue屏幕长宽自适应

    2020-08-25 14:47:08
    通过定义属性进行双向绑定改变body的高度,watch监测窗口大小变化时触发,改变属性值达到预期效果,代码贴上 <template> <div class="bgColor" :style="'height:'+fullHeight+'px;'"> <div ...
  • cocos2d-JS 监听屏幕大小改变函数

    千次阅读 2016-09-05 15:06:39
    第一个 : 可以监听到safari浏览器 网址栏弹出情况window.onresize = ... alert("检测到屏幕大小变化"); }第二个 : 只能监听普通网页浏览器大小变化cc.view.setResizeCallback(function() { alert("sizeChange
  • vue 自适应屏幕的宽高度

    万次阅读 2019-05-23 10:37:55
    通过定义属性进行双向绑定改变body的高度,watch监测窗口大小变化时触发,改变属性值达到预期效果,代码贴上 <template> <div class="bgColor" :style="'height:'+fullHeight+'px;'"> <div class=...
  • 关于变化检测机制,zones和ExpressionChangedAfterItHasBeenCheckedError错误的综述 ... ... 初次相遇 下面是一个简单的Angular组件,它在应用中发生变化检测时...点击按钮触发变化监测: 组件的代码实现如下: @Compo...
  • 编程 在屏幕中间依次显示’a’ ~ ‘z’,并可以让人看清。在显示过程中,按下Esc键后,改变颜色。 分析 PC键盘输入的处理过程: 1 键盘产生扫描码 2 扫描码送入60h端口 3 引发9号中断 4 CPU执行执行9号中断例程...
  • 要不~好冷~~升温了,别在屋里腌辣白菜了,要不~会馊~~这个季节在东北,没有暖气的日子不堪回首,供暖后,“忽如一夜春风来”,冷暖之间,温湿变化,与健康息息相关,与生活密不可分,持续监测室内温湿变化,很有必要...
  • 到目前JS的强大和所能完成的工作已经不言而喻,然而杯具的...所以如果是内嵌页建议使用resize事件,检查宽高变化来检测屏幕是否旋转。 代码使用实例:&lt;script type=&quot;text/javascript&quot;&gt;
  • 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。 直接在 watch 后面接你想运行的命令,watch 就会帮你重复运行,并把每次的结果都更新在屏幕上。 默认 watch 会以 2s 的间隔重复运行命令,你也...
  • 关于变化检测机制,zones和ExpressionChangedAfterItHasBeenCheckedError错误的综述如果您更喜欢看视频的话,请点击这里。...点击按钮触发变化监测:组件的代码实现如下:@如你所见,这个组件非常基础。组...
  • 相比于传统图表与数据仪表盘,数据可视化监控大屏幕,可以打破数据隔离,通过数据采集、清洗、分析到直观实时的数据可视化,即时呈现隐藏在瞬息万变且庞杂数据背后的业务洞察。通过交互式实时数据可视化大屏来实时...
  • 第一章绪论1.1实训设计背景与意义随着生活水平的提高和科技水平的发展,人们对自身和家庭安全方面的考虑也越来越多,越来越多的安全监测系统和设备进入到人们的生活中,如家庭防火系统、家庭防盗系统、家庭远程监控...
  • 2、监测屏幕变化 当点击输入框的时候弹出然键盘,会触发屏幕变化,一旦屏幕变小时将原来的fixed样式设置成其他的标准的流式布局。屏幕回到原来的大小时就恢复原来的fixed样式 var windowInnerHeight = ...
  • 最后给出了 UIDevice 的使用方法,包括可以访问设备名称,系统版本,UUID,监测电量变化,电池电量状态,监测屏幕方向变化,以及监测iPhone 是否在接近用户的身体。 UIDevice UIDevice 是 UIKit 框架下Core App 中的...
  • 通过实时监测画面的微妙变化,驱动电视机两侧的LED智能灯光,根据屏幕内容变幻出绚丽多样的色彩,并将其延伸到液晶显示器(电视)屏幕之外,光彩流动突破屏幕限制,从而形成更为宽广的视觉欣赏范围,营造影院般的视觉...
  • 实时改变配置

    2019-10-02 04:28:04
    它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。 为了能让Activity能监听实时的配置...
  • 在Android的触摸消息中,已经实现了三种监测,它们分别是 1)pre-pressed:对应的语义是用户轻触(tap)了屏幕 2)pressed:对应的语义是用户点击(press)了屏幕 3)longpressed:对应的语义是用户长按(long press)了...
  • android Configuration详解

    千次阅读 2012-02-15 19:27:15
    它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。 为了能让Activity能监听实时的配置...
  • android Configuration

    2013-03-27 10:49:34
    它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。 为了能让Activity能监听实时的配置...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

屏幕变化监测