在Netflix網站上觀看Netflix視頻時,我的目標是讓用戶腳本以編程方式調用播放控件。具體來說,視頻的音量,級別,播放/暫停狀態和時間位置。使用Tampermonkey控制Netflix(HTML5)播放/ javascript
我已經能夠操縱html5視頻元素本身,但直接控制它並不能提供所需的netflix控制條反饋給用戶。 (即視頻暫停,但控制欄仍顯示爲播放)。
到目前爲止,我的方法是嘗試找到代表使用常規控件時單擊的「按鈕」的元素,並通過userscript觸發其點擊事件。但我似乎無法孤立適當的元素。此外,netflix正在使用JavaScript壓縮器/混淆器,這增加了查找代表控制欄上按鈕的適當元素的難度。
在這樣的網站上,如何識別接收元素的點擊事件的元素,然後通過tampermonkey和/或greasemonkey創建一個userscript來調用它?
在下面的示例代碼中,爲了測試目的,我在視圖上添加了一個按鈕。
// ==UserScript==
// @name Jump a minute ahead in netflix
// @version 0.1
// @description A Test by trying to jump a minute or so ahead into a netflix movie
// @match *://www.netflix.com/*
// @grant GM_addStyle
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==
var zNode = document.createElement ('div');
zNode.innerHTML = '<button id="myButton" type="button">Try It</button>';
zNode.setAttribute ('id', 'myContainer');
document.body.appendChild (zNode);
//--- Activate the newly added button.
document.getElementById ("myButton").addEventListener (
"click", ButtonClickAction, false
);
function ButtonClickAction (zEvent) {
/*--- For our dummy action, we'll just add a line of text to the top of the screen.*/
var zNode = document.createElement ('p');
var video = $("video:first-of-type");
var playerSlider = document.getElementsByClassName("player-slider")[0];
console.log(netflix);
console.log(playerSlider);
console.log(netflix.player);
console.log(netflix.cadmium);
console.log(netflix.cadmium.ui);
console.log(netflix.cadmium.ui.playback);
//video.get(0).pause();
//video.get(0).currentTime = 2000.0;
console.log(video.get(0).currentTime);
console.log(netflix.cadmium.ui.volume);
zNode.innerHTML = 'The button was clicked.';
document.getElementById ("myContainer").appendChild (zNode);
}
//--- Style our newly added elements using CSS.
GM_addStyle (multilineStr (function() {/*!
#myContainer {
position: absolute;
top: 0;
left: 0;
font-size: 20px;
background: orange;
border: 3px outset black;
margin: 5px;
opacity: 0.9;
z-index: 222;
padding: 5px 20px;
}
#myButton {
cursor: pointer;
}
#myContainer p {
color: red;
background: white;
}
*/}));
function multilineStr (dummyFunc) {
var str = dummyFunc.toString();
str = str.replace (/^[^\/]+\/\*!?/, '') // Strip function() { /*!
.replace (/\s*\*\/\s*\}\s*$/, '') // Strip */ }
.replace (/\/\/.+$/gm, '') // Double-slash comments wreck CSS. Strip them.
;
return str;
}
console.log語句顯示了我迄今爲止發現的一些內容。但我還沒有想出如何從它們調用函數,或者哪些可能有我正在尋找的功能(我認爲主要是由於JavaScript壓縮器使我難以遵循代碼)。
的Silverlight播放器控制,請參閱http://stackoverflow.com/q/6086205/32453 – rogerdpack
截至9月2017年。這是唯一可行的答案。 https://stackoverflow.com/questions/42105028/netflix-video-player-in-chrome-how-to-seek/46816934#46816934 –