// ==UserScript== // @name Steam Video Overlay // @version 0.2 // @description 让 Steam 游戏详情页面的视频悬浮起来~~~ // @author NotaStudio // @match http://store.steampowered.com/app/* // @match https://store.steampowered.com/app/* // @grant none // @license GPLv3 // @namespace https://greasyfork.org/users/8882 // @downloadURL none // ==/UserScript== /* * ChangeLog * 20150206 0.2 * 重构代码,强制播放 HTML5 视频,更改播放地址获取方式,通过 HTML5 Media API 同步播放进度和音量,大幅优化性能 * 20150205 0.1-alpha * 首次发布 */ var fileUrl,currentNode; console.log("土豪买买买!!!\n Steam Video Overlay 0.2\n Created by Nota\n 2015.02.06"); var dateExpires = new Date(); dateExpires.setTime( dateExpires.getTime() + 1000 * 60 * 60 * 24 * 365 * 10 ); document.cookie = 'bShouldUseHTML5=1; expires=' + dateExpires.toGMTString() + ';path=/'; // 强制播放 HTML5 视频,代码来自于 Enhanced Steam var videoNode = document.body.getElementsByTagName("video"); if (videoNode === undefined) { location.reload(true); } window.collectionToArray = function(collection) { var ary = []; for(var i = 0, len = collection.length; i < len; i++) { ary.push(collection[i]); } return ary; }; // 此函数原作者为三水清(http://js8.in/) window.getFileUrl = function() { if (event.srcElement.getAttribute("id") == "svoWindow") { ; } else { currentNode = event.srcElement; fileUrl = currentNode.currentSrc; } }; window.scrollEvent = function() { if (window.pageYOffset > screen.availHeight) { if (document.getElementById("svoWindow").getAttribute("style") == "z-index: 99999;position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;") { ; } else { currentNode.pause(); document.getElementById("svoWindow").src = fileUrl; document.getElementById("svoWindow").currentTime = currentNode.currentTime; document.getElementById("svoWindow").setAttribute("style", "z-index: 99999;position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;"); document.getElementById("svoWindow").volume = currentNode.volume; document.getElementById("svoWindow").play(); } } else { if (document.getElementById("svoWindow").getAttribute("style") == "z-index: -99999;position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;") { ; } else { document.getElementById("svoWindow").pause(); currentNode.currentTime = document.getElementById("svoWindow").currentTime; currentNode.volume = document.getElementById("svoWindow").volume; document.getElementById("svoWindow").setAttribute("style", "z-index: -99999;position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;"); currentNode.play(); } } }; window.createWindow = function() { var videoNode = document.createElement("VIDEO"); videoNode.setAttribute("src", ""); videoNode.setAttribute("id", "svoWindow"); videoNode.setAttribute("width", "30%"); videoNode.setAttribute("height", "30%"); videoNode.setAttribute("style", "z-index: -99999;position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;"); document.body.appendChild(videoNode); document.getElementById("svoWindow").pause(); }; window.closeWindow = function() { document.body.setAttribute("onscroll",""); document.body.removeChild(document.getElementById("svoWindow")); for(var i = 0;i < videoNode.length;i++){ videoNode[i].setAttribute("onplay",""); } }; document.body.setAttribute("onscroll","scrollEvent()"); document.body.setAttribute("onload","createWindow()"); for(var i = 0;i < videoNode.length;i++){ videoNode[i].setAttribute("onplay","getFileUrl()"); } var svoOptions = document.createElement("DIV"); var optionText = document.createTextNode("Steam Video Overlay 选项:"); svoOptions.setAttribute("class", "glance_tags_label"); svoOptions.appendChild(optionText); document.body.getElementsByClassName("rightcol")[0].appendChild(svoOptions); var closeButton = document.createElement("A"); var closeButtonSpan = document.createElement("SPAN"); var closeSpanText = document.createTextNode("不再显示视频浮窗"); closeButton.setAttribute("onclick", "closeWindow()"); closeButton.setAttribute("class", "btnv6_blue_hoverfade btn_medium app_tag"); closeButtonSpan.appendChild(closeSpanText); closeButton.appendChild(closeButtonSpan); document.body.getElementsByClassName("rightcol")[0].appendChild(closeButton);