带有事件处理程序的Javascript变量范围

时间:2012-05-20 09:16:05

标签: javascript html5

这是关于JS变量范围的第n个问题,但我仔细阅读了其余内容并没有得到答案。

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 个答案:

答案 0 :(得分:2)

从函数中删除参数:

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

固定代码:

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

答案 1 :(得分:1)

在名称冲突期间,局部变量优先。删除或重命名参数itemLink

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