2014-02-19 5 views
0

Я получил эту функцию в JavaScript:злоупотребляя JavaScript строковые операции

g.changeImage = function (a) { 
    h.src = "image" + a + ".png"; 
}; 

Он используется так:

g.changeImage(2); 

И это меняет изображение час. Проблема в том, что он не может использовать изображение из другого каталога, кроме текущего.

Я пишу «аддон» для сайта, который должен подключиться к существующему скрипту и изменить несколько вещей. Один из них требует изменения h.src. Есть ли способ обмануть браузер и изменить адрес h на пользовательский url, используя только функцию?

Я не могу получить доступ к h напрямую или изменить существующий скрипт на веб-сайте. Я могу использовать только функцию.

Благодарим за помощь.

+0

Короче, не легко, а не чисто. Если бы вы могли создать подкаталог с именем 'images', то, возможно, значение' a' могло бы быть 's \ someothername', дающее' images \ someothername.png'. –

+2

* Почему вы используете только эту функцию? – Pointy

+0

@ g.d.d.c У меня нет доступа к хост-серверу. –

ответ

1

Один из вариантов, что я могу придумать с верхней части моей головы будет перезаписывать функцию:

Старый Функция:

g.changeImage = function (a) { 
    h.src = "image" + a + ".png"; 
    alert(h.src); 
}; 
g.changeImage("test.png") 

Новая функция:

g.changeImage = function (a) { 
    h.src = "test - new url " + a + ".png"; 
    alert(h.src); 
} 
g.changeImage("test") 

Вот быстрый пример для вас, чтобы играть и посмотреть, будет ли это работать для чего вам нужно: http://jsfiddle.net/2BsQP/

+0

Переопределение функции с консоли или любого другого скрипта меняет контекст функции, поэтому я не могу получить доступ к h оттуда. Все еще хорошая стрельба. –

+0

Gotcha ... Я буду продолжать думать об этом. –

+0

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

Смежные вопросы