Steam Video Overlay

让 Steam 游戏详情页面的视频悬浮起来~~~

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Steam Video Overlay
// @version      0.3
// @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
// ==/UserScript==

/*
 * ChangeLog
 * 20150210 0.3
 * 更改隐藏视频浮窗方式,精简代码,把视频浮窗调大了一点(毕竟眼瞎),修复无法强制播放 HTML5 视频的 bug
 * 20150206 0.2
 * 重构代码,强制播放 HTML5 视频,更改播放地址获取方式,通过 HTML5 Media API 同步播放进度和音量,大幅优化性能
 * 20150205 0.1-alpha
 * 首次发布
 */

var fileUrl,currentNode,svoWindow;

console.log("土豪买买买!!!\n Steam Video Overlay 0.3\n Created by Nota\n 2015.02.10");

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[0] === 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 (svoWindow.style.opacity == "1")
        {
            ;
        }
        else
        {
            currentNode.pause();
            svoWindow.src = fileUrl;      
            svoWindow.currentTime = currentNode.currentTime;
            svoWindow.style.opacity = "1";
            svoWindow.volume = currentNode.volume;
            svoWindow.play();
        }
    }
    else
    {
        if (svoWindow.style.opacity == "0")
        {
            ;
        }
        else
        {
            svoWindow.pause();
            currentNode.currentTime = svoWindow.currentTime;
            currentNode.volume = svoWindow.volume;
            svoWindow.style.opacity = "0";
            currentNode.play();
        }
    }
    
};

window.createWindow = function() {   
    var videoNode = document.createElement("VIDEO");
    videoNode.setAttribute("src", "");
    videoNode.setAttribute("id", "svoWindow");
    videoNode.setAttribute("width", "33%");
    videoNode.setAttribute("height", "33%");
    videoNode.setAttribute("style", "position: fixed;bottom: 25px;right: 25px;top: auto;left: auto;");
    document.body.appendChild(videoNode);
    svoWindow = document.getElementById("svoWindow");
    svoWindow.style.opacity = "0";
    svoWindow.pause();
};

window.closeWindow = function() {
    document.body.setAttribute("onscroll","");
    document.body.removeChild(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);