Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> отредактировать функцию со страницы
123456  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 889
Пользователь №: 30352
На форуме: 5 лет, 28 дней
Карма: 12




На странице есть функция

ajax.plainpost = function (a, f, u) {
// 100500 строк в функции...
}



Мне необходимо дописать в начало этой функции код alert('1');

.
Делаю так:

// Получаю функцию и преобразую в строку
var my_func_msg = String(ajax.plainpost);

// Определяем начало функции
var my_len = my_func_msg.indexOf('{') + 1;

// Код, который будет вставлен в начало функции
var my_script = 'alert(\'1\'); ';

// текстовый вариант полученной функции
var newFunc = my_func_msg.substr(0, my_len) + my_script + my_func_msg.substr(my_len);

// Присваиваем
ajax.plainpost = eval('(' + newFunc + ')');



Но мне надо сделать все тоже самое, но без использования eval

Есть какие мысли?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
123456  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 889
Пользователь №: 30352
На форуме: 5 лет, 28 дней
Карма: 12




разобрался

ajax.plainpost = eval('(' + newFunc + ')');


заменил на

ajax.plainpost = new Function("return " + newFunc )();
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11783
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 10 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 10 дней


кошмар
var originalPlainpost = ajax.plainpost;

ajax.plainpost = function () {
alert('1');
return originalPlainpost.apply(this, arguments);
};


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
123456  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 889
Пользователь №: 30352
На форуме: 5 лет, 28 дней
Карма: 12




Invis1ble
хорошо, это я как пример привел. На самом то деле мне надо в switch добавить case

Можно как-то проще сделать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11783
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 10 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 10 дней


есть принципиальная разница между
Цитата (123456 @ 16.11.2016 - 19:15)
дописать в начало этой функции код

и
Цитата (123456 @ 17.11.2016 - 17:39)
в switch добавить case



--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса