中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何讓SpringBoot中谷歌瀏覽器全屏效果實現

發布時間:2021-09-24 15:05:46 來源:億速云 閱讀:119 作者:柒染 欄目:開發技術

如何讓SpringBoot中谷歌瀏覽器全屏效果實現,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

項目場景:

客戶需求文檔中,要求在Win10系統下須使用Chrome谷歌瀏覽器展示頁面,但高層相關方希望頁面展示時可以實現全屏效果以提高用戶體驗。

對于谷歌瀏覽器的全屏功能來說,前端的實現已經不行了,之前谷歌瀏覽器基于安全的考慮封禁了任何調用全屏的事件(必須用戶手勢user gesture),有嘗試過捕獲用戶手勢觸發點擊事件的參數,但捕獲到后發現事件參數太多(密密麻麻的ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘),模擬起來太費勁會浪費太多時間(還是算了吧 ╮(??? ????)╭)。

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

如何讓SpringBoot中谷歌瀏覽器全屏效果實現

問題描述:

接下來的問題在于后端代碼執行運行vbs腳本時遇到的權限問題,這段代碼如下:

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

原因分析:

假如運行沒有系統管理員權限的cmd來運行jar包的話,你會發現這段代碼不會運行也不會報錯,但是就是沒有效果出來(咦?我明明按了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腳本內容
        String command = "set ws=createObject(\"WScript.Shell\")\nws.SendKeys \"{F11}\"";
        //獲取Win10默認桌面路徑,親測部署可用
        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};
            //此行代碼運行vbs腳本文件會需要系統管理員權限
            Process process = Runtime.getRuntime().exec(cmd);
            process.waitFor();
        } catch (Exception e) {
            log.error("客戶端IP【{}】F11調用失敗!原因:" + e.getMessage(), clientIp);
        }
        log.info("客戶端IP【{}】F11調用成功!", clientIp);
    }
    
} (? ??_??)?

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

還好,經驗豐富滴我,試了一下系統管理員cmd運行jar包,誒~~~口以了!!!?:.?ヽ(?????)??.:?+?。

然后,開始寫批處理文件先獲取系統管理員權限打開cmd后臺運行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

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

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

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

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

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

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

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

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

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

源碼鏈接:

https://github.com/tony901/Fullscreen

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

行到水窮處,坐看云起時。

如何讓SpringBoot中谷歌瀏覽器全屏效果實現

關于如何讓SpringBoot中谷歌瀏覽器全屏效果實現問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三江| 磐安县| 澄迈县| 衡阳县| 南澳县| 象山县| 壶关县| 宁乡县| 伊宁县| 南丹县| 论坛| 获嘉县| 札达县| 江源县| 天全县| 珲春市| 宣汉县| 富蕴县| 清流县| 隆回县| 龙门县| 清镇市| 彭山县| 吉首市| 禹城市| 德兴市| 虹口区| 乌拉特中旗| 万年县| 如皋市| 玉门市| 宜城市| 循化| 宜川县| 威远县| 汝南县| 深泽县| 南部县| 泰宁县| 资阳市| 夏河县|