Переопределить подтверждение window.confirm () через расширение chrome? - PullRequest
0 голосов
/ 31 октября 2018

Чтобы упростить пример, допустим, у меня есть следующая веб-страница:

<html>
<input type="button" value="click me!" onclick="Confirmation()">
</html>

<script>
    function Confirmation() {

        if (window.confirm("Are you sure you want to proceed?")) {
            alert("proceeded!");
        }
    }
</script>

Я пытаюсь внедрить мое расширение Chrome таким образом, чтобы оно либо перекрывало функцию подтверждения (),
, либо меняло его следующим образом:

<script>
    function Confirmation() {

        if (true) {
            alert("proceeded!");
        }
    }
</script>

как мне этого достичь?


Edit:

Это решение, которое работало со мной:

@ функция элегантного пользователя

var jsCodeInjection = '' + function Confirmation() {
    if (true) {
            alert("proceeded cs!");
        }

} + '';
var script = document.createElement('script');
script.textContent = jsCodeInjection;
(document.body||document.documentElement).appendChild(script);
script.remove();

Если вам нужен более понятный способ его реализации, то:

@ Направление Kaiido о том, как внедрить отдельный файл .js для более чистой реализации:

Вставить код в контекст страницы с помощью скрипта содержимого

Если элемент script имеет несколько функций, и вы пытаетесь переопределить одну (или несколько) из них,
, тогда вам нужно скопировать все функции в отдельный файл js и настроить нужные вам функции. настроить.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Если вы можете ввести код на странице, то вам просто нужно перезаписать window # verify () метод:

(()=>{
  const c = window.confirm;
  window.confirm = (...args) => {
   c.call(window, args);
   return true;
  }
 })();

console.log(confirm('works?'));

Обратите внимание, что перезаписывать методы по умолчанию, подобные этим, не рекомендуется, но также не используется window.confirm() ...

0 голосов
/ 31 октября 2018

Меньше, но вы можете попробовать следующий код в вашем скрипте контента:

var jsCodeInjection = '' + function Confirmation() {
    if (true) {
            alert("proceeded cs!");
        }

} + '';
var script = document.createElement('script');
script.textContent = jsCodeInjection;
(document.body||document.documentElement).appendChild(script);
script.remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...