一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot實戰(zhàn)項目之谷歌瀏覽器全屏效果實現(xiàn)

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

2022-01-10 13:59愛彈吉他的小盆友 Java教程

這篇文章主要介紹了通過 Java SpringBoot來實現(xiàn)谷歌瀏覽器的全屏效果,希望頁面展示時可以實現(xiàn)全屏效果以提高用戶體驗。感興趣的小伙伴跟著小編往下看吧

項目場景:

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

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

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

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

問題描述:

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

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

原因分析:

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

解決方案:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
 * @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腳本文件會需要系統(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)驗豐富滴我,試了一下系統(tǒng)管理員cmd運(yùn)行jar包,誒~~~口以了!!!

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
::::::::::::::::::::::::::::::::::::::::::::
:: 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)建一個文本文件(后綴.txt),編輯輸入以上代碼,文件后綴改成.bat,雙擊運(yùn)行(jar包必須和批處理文件同一個目錄下),這時彈窗完兩次即啟動完成。

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

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

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

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

這時就差不多大功告成啦!

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

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

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

源碼鏈接:

https://github.com/tony901/Fullscreen

都看完啦,給個一鍵三連八~

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

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

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

原文鏈接:https://blog.csdn.net/qq_21609191/article/details/118784814

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 成年极品漫画在线观看 | 多人群p全肉小说 | 欧美精品综合一区二区三区 | 精品视频久久久久 | 日本高清在线播放一区二区三区 | 亚洲精品动漫免费二区 | 精品久久久久久无码人妻国产馆 | 91麻豆国产精品91久久久 | 视频二区 素人 欧美 日韩 | 亚洲一区二区三区不卡在线播放 | 亚洲国产精品线在线观看 | 日韩欧美一区黑人vs日本人 | 被强迫调教的高辣小说 | 国产精品青青在线观看香蕉 | eee在线播放成人免费 | 精品久久久久免费极品大片 | 青青热久免费精品视频网站 | 亚洲 在线 日韩 欧美 | 国内精品伊人久久大香线焦 | 海角社区在线视频 | 荡女淫春2未删减版 | 日本网络视频www色高清免费 | dasd817黑人在线播放 | 国内精品久久久久久中文字幕 | 国产-第1页-草草影院 | 女攻双性 | 久久精品观看影院2828 | 久久这里有精品 | 91传媒制片厂制作传媒破解版 | 国产第一福利影院 | 亚洲欧美视频在线播放 | 日本ww视频| 国内精品久久久久久不卡影院 | 亚洲精品久久中文字幕 | 成人精品区 | 国产亚洲精aa在线观看不卡 | 513热点网深夜影院影院诶 | 天天操天天爽天天射 | 日本xxxxx高清免费观看 | 国产成人愉拍免费视频 | 免费观看二十女人一摸是水 |