2012-05-20 2 views
0

Это n-й вопрос о области видимости JS, но я прочитал все остальное и не получил ответа.Область переменной Javascript с обработчиком событий

var notification = window.webkitNotifications.createNotification(
'image.png',      // The image. 
'New Post: ',// The title. 
'New stuff'// The body. 
); 

var itemLink = 'http://pathtothefile.com'; 

notification.onclick = function(itemLink) { 
window.focus(); 
window.open(itemLink,'_blank'); 
this.cancel(); 
}; 

notification.show(); 

Как получить itemLink, который определен в глобальной области действия, для работы в функции onclick?

+2

Удалить из списка параметров. Это просто в автоматическом режиме, поскольку это более низкая область. – Corbin

ответ

2

Удалить параметр из функции:

notification.onclick = function(itemLink) { // overrides itemLink in the global 
              // object. 

Фиксированный код:

notification.onclick = function() { 
    window.focus(); 
    window.open(itemLink,'_blank'); 
    this.cancel(); 
}; 
+0

Большое спасибо gdoron, это решило мою проблему – kakoma

1

Во время конфликтов имен, локальные переменные имеют приоритет. Удалите или переименуйте аргумент itemLink.

notification.onclick = function(something_else) { 
    //global itemLink should be accessible 
}; 
+0

Большое спасибо Джозефу. – kakoma

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