Chrome Расширения: Использовать сценарий содержимого для изменения существующих сценариев на веб-странице? - PullRequest
1 голос
/ 01 марта 2020

Я создаю расширение chrome, которое необходимо подключить к другому сценарию, который уже существует на моей целевой веб-странице. Для простоты я пытаюсь найти следующий существующий элемент script на странице и добавить к нему console.log ().

<script type="text/javascript">
    var viewModel = new ScenePlayViewModel('', 'Ace', false);
    viewModel
        .load('jgWJJ2qsxx')
        .then(function () {
            sceneDOM = new SceneEditDOM2(viewModel.scene());
            sceneDOM.init();
            viewModel.isSubmitViaShareUrl(false);
            viewModel.isSubmitViaUnityPackage(false);
            console.log("HOOK INJECTED"); <--------------------------------------------- line to add
        });

</script>

Я пробовал несколько решений, но ни одно из них казалось, работает. Например, я попытался использовать сценарий содержимого, чтобы найти сценарий и заменить текст, но, похоже, вместо моего измененного кода запускается сценарий предварительной замены.

// replaces javascript on website, but doesn't run new version

var scriptLoadScene = $("script:contains('new ScenePlayViewModel')"); // find the script
scriptLoadScene.text("console.log('Hello World')"); // change the text

Что мне делать? По сути, я просто пытаюсь изменить / добавить сценарии на веб-странице, чтобы добавить больше возможностей.

1 Ответ

1 голос
/ 02 марта 2020

Это не совсем отвечает на ваш вопрос, но, надеюсь, поможет вам найти решение.

Во-первых - надеюсь, кто-то с большим знанием, чем я, подтвердит или дискредитирует это - насколько я понимаю, код сценария запускается только один раз при загрузке страницы, если иное не вызвано каким-либо событием. Поскольку расширения Chrome запускаются после загрузки страницы, этот сценарий уже будет запущен, и все, что будет вставлено после, не запустится, если не будет запущено.

Я полагаю, что вы всегда можете вызвать функцию снова после того, как вы ' Я отредактировал его, но у меня нет знаний или опыта, чтобы предсказать, что произойдет тогда.

По своему опыту, я только что добавил свои собственные теги '' с кодом, который хотел запустить, написав их в DOM, либо в элемент '' или ''.

Желаем удачи. -brent

...