Я пытаюсь изменить поведение проигрывателя YouTube, изменив некоторые переменные внутри скрипта player_api, встроенного в html-страницу просмотра видео.
Проблема в том, что что бы я ни пытался, встроенный скрипт плеера всегда запускается до того, как мое расширение добавит к нему модификации. Таким образом, поведение игрока остается прежним.
Я попытался установить для свойства run_at в своем манифесте значение document-start, но тогда скрипт не запустился вообще.
Что я могу сделать, чтобы остановить выполнение этого скрипта, пока я не внесу в него изменения?
PS: я попытался изменить скрипт, перехватив вызов html и отредактировав тело с помощью Charles Proxy, и поведение игрока изменилось, как я хотел. Так что он знает, что это должно сработать, если сделать это в нужное время.
.
manifest.json
{
"manifest_version": 2,
"name": "YouFit For YouTube",
"version": "1",
"content_scripts": [{
"js": ["content.js"],
"matches": ["https://*.youtube.com/watch?*",
"https://*.youtube.com/watch?*"],
}],
"browser_action": {
"default_icon": "icon.png"
}
}
content.js
function changeBehavior() {
var scriptElements = document.getElementsByTagName('script');
for (var i = 14; i < scriptElements.length; i++) {
var curScriptBody = scriptElements[i].outerHTML;
// Find the script i'm interested in
if (curScriptBody.indexOf("var ytplayer") != -1) {
scriptElements[i].outerHTML = scriptElements[i].outerHTML.replace("<text>", "<replacement text>");
alert("Replaced");
break;
}
}
}
changeBehavior();
window.stop()
2) получить исходный html vix XHR/fetch 3) выполнить замену текста 4) перезаписать страницу черезdocument.write()
- person wOxxOm   schedule 15.02.2018watch?id=videoID
я хочу добавить тег в массив ключевых слов внутри скрипта, который будет растягивать видео, чтобы оно соответствовало экранам 16x9. Я добавляю тег, просто заменяя keywords: на keywords:yt:stretch=16:9, - person DarkMental   schedule 19.02.2018XHTTP.responseText
в документ, затем выполнить замену целевого встроенного скрипта, а затем преобразовать его обратно в html-текст. что я могу ввести, используяdocument.write
Похоже, что замена регулярного выражения на весь текст html не дает никакого результата. - person DarkMental   schedule 21.02.2018document.write
не выполняет свою работу, то (погружаясь все глубже и глубже в hax) вы всегда можете попробовать вставить iframe на страницу сsrc
равным data-uri в кодировке base64, эквивалент всей полученной вами страницы. Тем не менее (как я полагаю) реальная проблема где-то рядом с командойwindow.stop
. Я думаю, тебе стоило попробовать просто стеретьbody
вместо этого. - person haldagan   schedule 21.02.2018