起源
手边有块4K外接触摸屏,平时用不到的时候就在旁边亮着显示桌面,不过主屏幕的桌面是横向的,外接屏喜欢竖向方,所以Win10的基本桌面背景就不好满足需求了。
之间试过ACDSee的幻灯片,也试过PPT,从相册库的大小和增删过程来说还是感觉很繁琐,所以就做了这么个简单的html,归根到底,还是懒…
Owl Carousel 2
这个插件库也是百度到的,用起来确实很贴合自己的需求,也是很幸运的有木有。本项目中用到的版本是 2.3.4,在官网下载的包里带了 3.3.1 的jQuery 以及 3.1.11 的 jquery.mousewheel 插件,用于滚轮翻页;其他插件可以在官网找下。
目前项目实现的功能:
- 以最大边为基准的自适应图片最大化,超出部分裁剪。测试使用的屏环境是1080*1920。
- 图片自动轮询播放,轮转时间为30S,目前写死在代码里,可以根据自己需要加设置菜单。
- 鼠标悬停在页面上时暂停轮询,如果单屏幕应用可以在配置中把
autoplayHoverPause
设为false
。 - 左键点击任意处切换播放/停止状态,停止时左上角显示三角指示。
- 鼠标中键滚轮切换上下张,触摸屏滑动开启,但图片质量大的情况下触摸滑动时会卡卡的。
- 图片基于当前时间戳随机顺序播放,每次刷新均为不同顺序;若不需要随机就把随机处理去掉;若随机顺序每次固定可以写死随机数种子。
- 自动检测图片资源是否存在,图片加载失败自动在相册中去除元素。
- 目前文件路径及文件名为固定,图片资源复制在本目录下以供调用。一开始想用input索引到指定目录,不过找了找除了用ActiveX没其他办法了(静态页面),所以就懒得弄了。
- 文件名为
Column (1).jpg
,就是Windows的全选重命名默认格式,图片数量若大于561张需要改下代码里的maxFileNum
,小于的话可以不改,找不到的会自动去除嘛。 - 使用Bat调用Chrome并加参数实现自动全屏播放不可退出,当然可以在任务栏右键关闭或Alt+F4。
总之目前只是实现的自己的刚需,所以没做太多通用性设计,像目录指定、图片文件名自动检索、各种参数设置,下方进度条等等,之后有需求再加吧。
index_Current - V1_11_220618更新
- 添加设置菜单,点击图片任意处暂停,显示暂停图标;点击暂停图标显示设置菜单。
- 设置数据保存为json文件,文件位置为项目根目录,或直接改json内容。
- 更改启动方式为Chrome的自定义工作环境为
D:\ChromeDebug_ATY\AlbumOwl
,开启--test-type --disable-web-security
模式以供本地跨域调用json。"ChromeParameters": "C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --user-data-dir="D:\ChromeDebug_ATY\AlbumOwl" --test-type --disable-web-security --start-fullscreen "file:///E:/Projects/ATY/ProjectsOfHTML/Done/AlbumOwl/index.html"
- 全屏方式换为非 kiosk 模式的
--start-fullscreen
,使用 Win+Shift+Right 实现屏幕切换。 - 两种方式去除无资源图片元素,同时在单次轮回后刷新页面,以保证无加载失败的图片显示出来,并实现无线轮询播放(也可以用 owl 的 destroy 加 initialize 实现)。
- 动态根据窗口大小相应图片尺寸,不会再出现改变高度出现底边的情况。
index_List - V1_01_220710更新
- 由原工程目录下的相册文件夹改为其他文件夹的文件列表,减少大文件副本的空间占用。
- 最大10张同时加载图片,减小过大过多图片同时加载时的内存占用或内存不足。
- 自动检测文件列表中已删除文件并刷新,避免显示空白页。
- 修改随机函数以适应文件名列表加载形式。
问题记录
HTML中 js刷新页面的几种方法
Guohao_Chen
reload() 方法:
语法:location.reload([bForceGet])
参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5(“刷新”)
该方法强迫浏览器刷新当前页面。replace() 方法:
语法: location.replace(URL)
该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method=”post”的时候,会出现”网页过期”的提示。那是因为Session的安全保护机制。
可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。
如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。
- 返回并刷新页面:
1
2
3
4<script language=”JavaScript”>
//document.referrer 前一个页面的URL
location.replace(document.referrer);
</script>
不要用 history.go(-1),或 history.back();来返回并刷新页面,这两种方法不会刷新页面。
自动刷新页面的方法:
- 页面自动刷新:把代码
<meta http-equiv=”refresh” content=”20″>
加入区域中,其中20指每隔20秒刷新一次页面。 - 页面自动跳转:把代码
<meta http-equiv=”refresh” content=”20;url=http://www.baidu.con”>
加入区域中,其中20指隔20秒后跳转到http://www.baidu.con页面。 - 页面自动刷新js版
1
2
3
4
5
6<script language=”JavaScript”>
function myrefresh(){
window.location.reload();
}
setTimeout(‘myrefresh()’,1000); //指定1秒刷新一次
</script>
- 页面自动刷新:把代码
如果想关闭窗口时刷新或者想开窗时刷新的话,在中调用以下语句即可。
1
2
3
4
5
6<body onload=”opener.location.reload()”> 开窗时刷新
<body onUnload=”opener.location.reload()”> 关闭时刷新
<script language=”javascript”>
window.opener.document.location.reload()
</script>
Chrome浏览器默认全屏启动(非–kiosk模式)
实际上,只需要修改快捷方式的参数,只不过后面不加 –kiosk,而是在后面加 –start-fullscreen 即可!
Chrome启动参数–user-data-dir 和 –profile-directory的关系
–user-data-dir 浏览器存储用户配置文件的目录。
–profile-directory 选择要与启动的第一个浏览器关联的配置文件目录。
user-data-dir 下可以有多个 profile-directory,每创建一个user就就会多一个profile-directory,其中默认的profile-directory 位于“user-data-dir\Default”, 之后每创建一个,对应的文件夹名称是:“user-data-dir\Profile 2”、“user-data-dir\Profile 3”
m_Options.AddArgument(“–user-data-dir=C:/Users/Me/AppData/Local/Google/Chrome/User Data”);
m_Options.AddArgument(“–profile-directory=Default”);
————————————————
版权声明:本文为CSDN博主「bigcarp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bigcarp/article/details/121437108
index_List.html
Bat部分
- 以UTF-8输出本目录下所有后缀为jpg与png的子文件到NameList.data,然后移动到AlbumOwl工程目录下。
1
2
3
4CHCP 65001 %UTF-8 Output%
dir *.jpg *.png /s /b /a:a > NameList.data
if exist NameList.data (move NameList.data E:\Projects\ATY\ProjectsOfHTML\Done\AlbumOwl\NameList.data)
index.html(V2_01_220710)
1 |
|
index_Current.html
Bat部分(废弃)
1 | ::@echo off |
实现起来有两种方式,一是复制一个Chrome的标准快捷方式,然后右键属性里加入 --user-data-dir="C:\ChromeDebug" -kiosk -fullscreen "file:///E:/Projects/ATY/ProjectsOfHTML/Done/AlbumOwl/index.html"
,然后就在Bat里start这个快捷方式就行了;另一种就是直接找Chrome的exe,其实就是把快捷方式里的内容复制出来在Bat执行,这样可移植性和目录下的文件数量都有优势,不过有个缺点就是语句不存在执行完的状态,Bat的黑窗口需要手动关。
–user-data-dir=”C:\ChromeDebug”
第一部分是使用Debug环境的Chrome,这可以和日常用的Chrome环境分开,不需要可以不加。-kiosk -fullscreen “file:///E:/index.html”
- –kiosk –edge-kiosk-type=fullscreen “file:///E:/index.html”
kiosk是调用Chrome的一个演示模式,所以可以自动全屏无法退出,无法右键;后边的文件就是打开Chrome后自动打开的网页。
后记:经过长时间摸索,因为两个屏幕的定位问题,最终还是只留了Edge的快捷方式,换屏 Shift+Win+Right 还是手动来…
index.html(V1_11_220618)
1 |
|
- setting.json
1
2
3
4
5
6
7
8
9{
"dirPath": "file:///E:/Projects/ATY/ProjectsOfHTML/Done/AlbumOwl/",
"albumPath": "Album/",
"imgName": "Column",
"imgSuffixes": ".jpg",
"cycleTime": "30",
"maxFileNum": "561",
"currentMode": "Column"
}
index.html(V1_01_220611)
1 |
|