最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實(shí)戰(zhàn)項(xiàng)目之谷歌瀏覽器全屏效果實(shí)現(xiàn)

 更新時(shí)間:2021年09月20日 12:47:53   作者:愛彈吉他的小盆友  
這篇文章主要介紹了通過 Java SpringBoot來實(shí)現(xiàn)谷歌瀏覽器的全屏效果,希望頁面展示時(shí)可以實(shí)現(xiàn)全屏效果以提高用戶體驗(yàn)。感興趣的小伙伴跟著小編往下看吧

項(xiàng)目場景:

客戶需求文檔中,要求在Win10系統(tǒng)下須使用Chrome谷歌瀏覽器展示頁面,但高層相關(guān)方希望頁面展示時(shí)可以實(shí)現(xiàn)全屏效果以提高用戶體驗(yàn)。

對于谷歌瀏覽器的全屏功能來說,前端的實(shí)現(xiàn)已經(jīng)不行了,之前谷歌瀏覽器基于安全的考慮封禁了任何調(diào)用全屏的事件(必須用戶手勢user gesture),有嘗試過捕獲用戶手勢觸發(fā)點(diǎn)擊事件的參數(shù),但捕獲到后發(fā)現(xiàn)事件參數(shù)太多(密密麻麻的ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘),模擬起來太費(fèi)勁會(huì)浪費(fèi)太多時(shí)間(還是算了吧 ╮(๑•́ ₃•̀๑)╭)。

由于Chrome谷歌瀏覽器的全屏觸發(fā)鍵盤按鍵是F11,我就以按F11為目標(biāo)整理一下思路。首先,頁面初始化發(fā)送一個(gè)get請求給后端程序接口,程序接收請求開始編寫vbs腳本并生成vbs腳本文件保存在Win10默認(rèn)桌面路徑上,程序再運(yùn)行此腳本點(diǎn)擊F11完成全屏效果,流程圖如下:

在這里插入圖片描述

問題描述:

接下來的問題在于后端代碼執(zhí)行運(yùn)行vbs腳本時(shí)遇到的權(quán)限問題,這段代碼如下:

	Process process = Runtime.getRuntime().exec(cmd);

原因分析:

假如運(yùn)行沒有系統(tǒng)管理員權(quán)限的cmd來運(yùn)行jar包的話,你會(huì)發(fā)現(xiàn)這段代碼不會(huì)運(yùn)行也不會(huì)報(bào)錯(cuò),但是就是沒有效果出來(咦?我明明按了F11,全屏呢 ◔ ‸◔?)。

解決方案:

接下來就來看一下代碼部分,首先先從后端程序接口開始:

/**
 * @Author: Tony Peng
 * @Date: 2021/7/9 10:20
 **/
@Slf4j
@RestController
@RequestMapping("/fullscreen")
public class FullscreenController {

    @GetMapping("/active")
    public void active(HttpServletRequest request) {
    	//獲取客戶端IP,用來寫日志的
        String clientIp = request.getRemoteHost();
        //桌面生成腳本的文件名,可自定義
        String fileName = "F11";
        //vbs腳本內(nèi)容
        String command = "set ws=createObject(\"WScript.Shell\")\nws.SendKeys \"{F11}\"";
        //獲取Win10默認(rèn)桌面路徑,親測部署可用
        String fileUrl = FileSystemView.getFileSystemView().getHomeDirectory() + "\\" + fileName + ".vbs";
        //生成vbs腳本文件在桌面上
        File file = new File(fileUrl);
        try {
        	//這邊判斷一下,文件不存在的話就再寫一份
            if (!file.exists()) {
                FileWriter fw = new FileWriter(fileUrl);
                fw.write(command);
                fw.close();
            }
            String[] cmd = new String[]{"wscript", fileUrl};
            //此行代碼運(yùn)行vbs腳本文件會(huì)需要系統(tǒng)管理員權(quán)限
            Process process = Runtime.getRuntime().exec(cmd);
            process.waitFor();
        } catch (Exception e) {
            log.error("客戶端IP【{}】F11調(diào)用失?。≡颍? + e.getMessage(), clientIp);
        }
        log.info("客戶端IP【{}】F11調(diào)用成功!", clientIp);
    }
    
} (ง •̀_•́)ง

以上接口寫好后用自己的編譯器(偶用滴素IDEA (●>∀<●))運(yùn)行起來,用另一臺電腦打開Postman測試一下接口,屢試不爽,興沖沖的打包部署,部署完后卻發(fā)現(xiàn)測來測去咋滴都沒效果呢ヽ(.◕ฺˇд ˇ◕ฺ;)ノ。

還好,經(jīng)驗(yàn)豐富滴我,試了一下系統(tǒng)管理員cmd運(yùn)行jar包,誒~~~口以了!!!。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚。

然后,開始寫批處理文件先獲取系統(tǒng)管理員權(quán)限打開cmd后臺運(yùn)行jar包,批處理文件代碼如下:

::::::::::::::::::::::::::::::::::::::::::::
:: Elevate.cmd - Version 4
:: Automatically check & get admin rights
::::::::::::::::::::::::::::::::::::::::::::
 @ECHO off
 CLS
 ECHO.
 ECHO =============================
 ECHO Running Admin shell
 ECHO =============================

:init
 setlocal DisableDelayedExpansion
 set cmdInvoke=1
 set winSysFolder=System32
 set "batchPath=%~0"
 for %%k in (%0) do set batchName=%%~nk
 set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
 setlocal EnableDelayedExpansion

:checkPrivileges
  NET FILE 1>NUL 2>NUL
  if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
  if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
  ECHO.
  ECHO **************************************
  ECHO Invoking UAC for Privilege Escalation
  ECHO **************************************

  ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  ECHO Next >> "%vbsGetPrivileges%"

  if '%cmdInvoke%'=='1' goto InvokeCmd 

  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  goto ExecElevation

:InvokeCmd
  @ECHO OFF
  ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
  ECHO Set ws = CreateObject("Wscript.Shell") 
  ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  
:ExecElevation
 "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
 exit /B

:gotPrivileges
 @ECHO OFF
 setlocal & cd /d %~dp0
 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

 ::::::::::::::::::::::::::::
 ::START
 ::::::::::::::::::::::::::::
 ::這里輸入你的代碼
 
 @ECHO off
 start javaw -Dfile.encoding=utf-8 -jar -Xmn128m -Xms256m -Xmx256m %~dp0\fullscreen.jar

先創(chuàng)建一個(gè)文本文件(后綴.txt),編輯輸入以上代碼,文件后綴改成.bat,雙擊運(yùn)行(jar包必須和批處理文件同一個(gè)目錄下),這時(shí)彈窗完兩次即啟動(dòng)完成。

作為一個(gè)程序員,能少一次彈窗我都覺得開熏 (*^▽^*) ,所以我又寫了一個(gè)vbs腳本文件隱藏第一次彈窗,目前還沒想到如何隱藏第二次彈窗的方法,如果有大神可以指導(dǎo)一下,可以留言一下我再做一下補(bǔ)充并申明某某某大神,感激不盡!Thanks♪(・ω・)ノ

隱藏第一次cmd彈窗腳本如下:

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c D:\Fullscreen\fullscreen.bat",vbhide

PS:盤符路徑請修改成運(yùn)行jar包的批處理文件的路徑。

這時(shí)就差不多大功告成啦!✿✿ヽ(°▽°)ノ✿

下面來補(bǔ)充前端的部分,如何用JS判斷當(dāng)前谷歌瀏覽器是否全屏,代碼如下:

	//谷歌瀏覽器判斷如果不是全屏的情況下
	if (!(document.body.scrollHeight === window.screen.height && document.body.scrollWidth === window.screen.width)) {
		//發(fā)送全屏請求
	}

PS:后端程序jar包必須和客戶端在同一臺計(jì)算機(jī)上部署,否則全屏無效。

源碼鏈接:

https://github.com/tony901/Fullscreen

都看完啦,給個(gè)一鍵三連八~ \ (*^▽^*) /

行到水窮處,坐看云起時(shí)。

行到水窮處,坐看云起時(shí)

到此這篇關(guān)于SpringBoot實(shí)戰(zhàn)項(xiàng)目之谷歌瀏覽器全屏效果實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot 全屏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中四種引用類型詳細(xì)介紹

    Java中四種引用類型詳細(xì)介紹

    這篇文章主要介紹了Java中四種引用類型詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • SpringBoot中使用Quartz管理定時(shí)任務(wù)的方法

    SpringBoot中使用Quartz管理定時(shí)任務(wù)的方法

    這篇文章主要介紹了SpringBoot中使用Quartz管理定時(shí)任務(wù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java中HashSet集合元素去重的操作代碼

    Java中HashSet集合元素去重的操作代碼

    在 Java 編程的廣闊天地里,集合框架是開發(fā)者們不可或缺的得力工具,其中,HashSet以其獨(dú)特的去重特性,成為處理不重復(fù)元素場景的首選,今天,咱們就深入探究一下HashSet集合元素的去重操作,需要的朋友可以參考下
    2025-03-03
  • Eclipse導(dǎo)出安卓apk文件的圖文教程

    Eclipse導(dǎo)出安卓apk文件的圖文教程

    這篇文章主要為大家詳細(xì)介紹了Eclipse導(dǎo)出安卓apk文件的圖文教程,以圖文結(jié)合的方式為大家分享了Eclipse是如何導(dǎo)出安卓apk文件的步驟,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析

    Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫分離效果

    springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫分離效果

    這篇文章主要介紹了springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫分離,通過使用docker獲取mysql鏡像,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • hibernate4基本配置方式詳解

    hibernate4基本配置方式詳解

    這篇文章給大家?guī)砹薶ibernate4基本配置方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的額朋友參考下吧
    2017-09-09
  • Java編寫實(shí)現(xiàn)登陸窗口

    Java編寫實(shí)現(xiàn)登陸窗口

    這篇文章主要為大家詳細(xì)介紹了Java編寫實(shí)現(xiàn)登陸窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java的函數(shù)式編程詳解

    Java的函數(shù)式編程詳解

    用了這么久的Java8,我尋思這種話也好意思說出來嗎,難道自己是PythonBoy出身就是看不懂Java的理由嗎,身為一個(gè)合格的后端Boy不會(huì)還有人看不明白Java的函數(shù)式編程吧,接下來小編和大家淺聊一下Java的函數(shù)式編程,需要的朋友可以參考下
    2023-10-10
  • java設(shè)計(jì)模式筆記之裝飾模式

    java設(shè)計(jì)模式筆記之裝飾模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式筆記之裝飾模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04

最新評論

莆田市| 襄樊市| 津南区| 邵东县| 富蕴县| 望江县| 平舆县| 上思县| 宿松县| 公主岭市| 土默特右旗| 卢氏县| 大悟县| 射阳县| 凌海市| 连山| 吴旗县| 稻城县| 余庆县| 紫金县| 库伦旗| 电白县| 利津县| 顺义区| 安多县| 临沂市| 龙陵县| 蒙城县| 肃南| 海南省| 博客| 潮安县| 兰坪| 延津县| 秀山| 太康县| 教育| 浦县| 思茅市| 彰武县| 内黄县|