javascript – 模拟点击/更改aria(netflix)滑块的值

我试图通过Google Chrome扩展来控制Netflix的播放器.这是控制栏的图像,对于那些不熟悉它的人来说.

我设法模拟一个点击播放/暂停,下一集,并使用以下代码切换全屏按钮(橙色方块):

$(".[control class]").click();

但是,相同的逻辑似乎不适用于控制您当前处于哪个视频的部分(蓝色矩形中的那个)的滑块.

我想要做的是更改视频的当前位置(例如,返回10秒).这是我迄今为止所尝试的:

更改aria-valueNow on section role =“slider”:

$(".player-slider")["aria-valueNow"] = 0;

检索红色圆圈,更改其位置并单击它:

$(".player-scrubber-target")["style"] = "width: 30%";
$(".player-scrubber-target").click();

(绝望)更改宽度和/或点击部分中的每个栏:

.player-scrubber-progress-buffered (change width and click)
.player-scrubber-progress-completed (change width and click)
.player-scrubber-progress (click)
#scrubber-component (click)

@编辑

非常感谢Kodos Johnson指出我的this问题,到kb0的原始代码,有一些研究,我可以从Chrome开发者工具的控制台更改音量和播放器的位置.以下是代码(为所需位置更改所需体积0〜99和[POSITION]的[VOLUME]):

// Change volume
netflix.cadmium.UiEvents.events.resize[0].scope.events.dragend[0].handler(null,{pointerEventData: {drag: {current: {value: [VOLUME]}}}});
// Change player position
netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null,{value: [POSITION],pointerEventData: {playing: false}});

不幸的是,这在Chrome开发者工具之外似乎不起作用.当我从我的扩展程序运行代码片段时,我得到:

Uncaught ReferenceError: netflix is not defined at <anonymous>:1:1

以下是我从我的扩展程序运行脚本的方式:

chrome.tabs.getSelected(null,function(tab){
    chrome.tabs.executeScript(tab.id,{code: [SNIPPET]},function(response) {});
});

题:

如何通过Chrome扩展程序以编程方式更改当前视频位置(或模拟用户点击该栏并手动更改它)?

解决方法

那么,感谢 Kodos JohnsonDehli把我放在正确的方向,到 kb0为以下代码[…]
netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null,{value: 999,pointerEventData: {playing: false}});

[…]通过一些研究,我设法获得了访问量和视频位置控件,并从Chrome开发者工具的控制台访问它们.为了解决我的扩展程序无法访问netflix var的事实,我将代码注入页面的< head&gt ;. 这是一个完整的例子:

function ChangeVolume(volume)
{
    InjectScriptOnPage("netflix.cadmium.UiEvents.events.resize[0].scope.events.dragend[0].handler(null,{pointerEventData: {drag: {current: {value: " + volume + "}}}});");
}

function ChangePosition(position)
{
    InjectScriptOnPage("netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null,{value: " + position + ",pointerEventData: {playing: false}});");
}

function InjectScriptOnPage(script)
{
        var script = "var head = document.getElementsByTagName('head')[0]; \
                      var script = document.createElement('script');\
                      script.type = 'text/javascript'; \
                      script.innerHTML = '" + script + "'; \
                      head.appendChild(script);";

        ExecuteScriptOnPage(script);
}

function ExecuteScriptOnPage(script)
{
    chrome.tabs.getSelected(null,function(tab){
        chrome.tabs.executeScript(tab.id,{code: script},function(response) {});
    });
}

(我会等到赏金结束标记为被接受,以防有人发布更好的答案)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...