【发布时间】:2012-10-13 23:21:54
【问题描述】:
我正在开发一个 chrome 扩展,它将 HTML 注入到页面中,并对某些按钮具有 onClick 功能。这是示例代码。
命名空间.js
/**
* Namespace for this content script.
* @const
*/
var namespace = {};
/**
* HTML text to be injected.
*/
namespace.HTML = '<input type="text" size="2" placeholder="0.50"' +
'onkeyup="namespace.enable(event)" />';
document.body.insertAdjacentHTML('afterbegin', namespace.HTML);
namespace.enable = function() {
alert('Hello World!')
};
HTML 被正确注入,但命名空间未被识别。 这是错误
Uncaught ReferenceError: namespace is not defined
onkeyup
有什么解决方法吗?
谢谢
【问题讨论】:
-
与“命名空间”无关。很简单,
window.namespace不存在 - 在这种情况下,因为它是一个局部范围的变量(var namespace,大概在函数内部)。 “可能有效”的廉价黑客是删除var;但最好避免使用基于字符串的事件处理程序。另外,this将评估运行内联事件处理程序的元素,这可能很有用。 -
@pst 所以你建议添加事件监听器?顺便说一句,删除 var 不起作用
-
“可能有效”与“将有效”不同——这取决于更大的背景。但是,是的,我建议使用非内联处理程序,甚至可能使用闭包。
标签: javascript javascript-events google-chrome-extension