Заменить функцию, выполняющую document.write, на другую - PullRequest
1 голос
/ 05 декабря 2011

У меня есть следующий тег script, где функция A () выполняет document.write ().У меня нет доступа к A (), так как он из скрипта третьей части.

//block1
<script type="text/javascript">
    A();
</script>

У меня нет никакой ловушки id / class для block1, но я могу ввести вызов функции до A (), напримерthis.

<script type="text/javascript">
     B();
     A();
</script>

Я хочу, чтобы функция B () заменяла block1 на

<script type="text/javascript">
     C();
</script>    
// or keep as is
<script type="text/javascript">
     A();
</script>

Возможно ли это и как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

Если вы можете вставить код после определения A(), но перед его вызовом (может быть невозможным), тогда вы можете переопределить A(), как если бы вы определили любую другую функцию в JavaScript.

Если это невозможно, вы можете переопределить document.write до вызова A(), а затем отменить это после вызова A(). Например:

var write = document.write;
document.write = function(s)
{
    //do nothing, or whatever you want
    console.log(s);
}
//then, after A(), just do:
document.write = write;
0 голосов
/ 05 декабря 2011

Возможно, вы можете вместо этого использовать обезьяну-патч?

A = C;

Это изменит все будущие вызовы на А для вызова С вместо этого. Это может или не может быть то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...