|
|
|
| сколько не думал над этим никак в голову ничего не приходит... помогите:)
есть функция function sm(whom,msg){} которая должна работать исключительно "когда мне нужно", тоесть при нажатии на кнопку или ещё чтото и использование её както по другому крайне не желательно:)
тоесть при вводе в адресную строку типа javascript:sm('s','s'); получается не хорошо..)
как можно защититься от такого? | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 14:47)
| | может попробовать применить функцию caller? | |
|
|
|
|
|
|
|
для: Lelik
(28.09.2008 в 15:04)
| | хм а по подробней можно?:) | |
|
|
|
|
 586.2 Кб |
|
|
для: sl1p
(28.09.2008 в 15:10)
| | в архив прикладываю документацию, так как сам этой функцией не пользуюсь :) | |
|
|
|
|
|
|
|
для: Lelik
(28.09.2008 в 15:12)
| | спасибо:)
Caller не рекомендуется с JavaScript 1.3 и больше не используется
опечалило :D
но попробую юзнуть) | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 15:17)
| | только вот всё равно не пойму в чём её смысл.. тоесть если функция была вызвана какойто функцией тогда всё ок, если же извне функции то sum.caller = null
ну например так:
function sum(a, b) {
alert(sum.caller);
return a + b;
}
function test(){
sum(6,6);
}
но что тогда мешает сделать так: javascript:test();
объясните кто шарит) | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 16:10)
| | >только вот всё равно не пойму в чём её смысл..
Вы инфу читали?
Возвращает ссылку на функцию, которая активизирует текущую функцию.
Свойство caller определяется только для функции, когда эта функция выполняется.
Если функция вызывается с верхнего уровня программы JavaScript, то caller содержит null.
Если свойство caller используется в строковом контексте, то результат является таким же,
как functionname.toString, т.е., декомпилированный текст функции выводится на дисплей.
|
Я ничего не пробовал, но так думаю, что надо как раз этот caller проверять.
Если он равен null, то выходим из функции (ничего не делаем), если нет - то функция выполянется. | |
|
|
|
|
|
|
|
для: ddhvvn
(28.09.2008 в 16:18)
| | та сидел же проверял, всё равно можно через адр. строку вызвать.( | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 16:29)
| | А точно!
Caller работает только при вызове из другой функции...
Я не пойму че вы заморачиваетесь? Че там такого сверхсуперособенного? ))
Понимаете, если можно вызвать функцию, то ее можно вызвать независимо от того, как это сделано.
Конечно, можно скажем, сделать какой-нибудь флаг, и когда Вам нужна функция - вызвать ее с этим флагом.
Но Вы не запретите точно также сделать вызов фукнции с этим флагом из адресной строки! =) | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 14:47)
| | Че за ужас? Зачем обычный пользователь будет вводить это в адресную строку? )) | |
|
|
|
|
|
|
|
для: ddhvvn
(28.09.2008 в 15:05)
| | ну а мало ли) например вконтакте какойто умник вывесил видео где любой может лупом добавить n-ое количество друзей xD | |
|
|
|
|
|
|
|
для: sl1p
(28.09.2008 в 14:47)
| | есть ещё одно решение:
document.onclick = function(e) {
var isGecko = !document.attachEvent && document.addEventListener || self.opera;
var oTarget = isGecko ? e.target : event.srcElement;
if(oTarget.id != "need_id" ){
return;
}
else {
тут уже сама функция
}
}
|
| |
|
|
|
|
|
|
|
для: Lelik
(28.09.2008 в 16:47)
| | эх спасибо..:)
но пришлось чтобы не долбить себе мозг всё своё переписывать) | |
|
|
|