gpt4 book ai didi

javascript - 以编程方式模拟点击/更改 aria (netflix) slider 的值

转载 作者:数据小太阳 更新时间:2023-10-29 03:54:50 25 4
gpt4 key购买 nike

我正在尝试通过 Google Chrome 扩展程序控制 Netflix 的播放器。这是控制栏的图片,供不熟悉的人使用。

Netflix player print

我设法使用以下代码模拟点击播放/暂停、下一集和切换全屏按钮(带有橙色方 block 的按钮):

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

但相同的逻辑似乎不适用于控制您当前所在视频的哪一部分(蓝色矩形内的那一部分)的 slider 。

我想做的是改变视频的当前位置(比如后退10秒)。到目前为止,这是我尝试过的:

section role="slider" 上更改 aria-valuenow:

$(".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 开发者工具的控制台更改音量和播放器位置。这是代码(将 [VOLUME] 更改为所需音量 0~99,将 [POSITION] 更改为所需位置):

// 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> 上注入(inject)代码.

这是一个完整的例子:

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) {});
});
}

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

关于javascript - 以编程方式模拟点击/更改 aria (netflix) slider 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42679738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com