我有这个JavaScript代码:
var cr = {};
cr.plugins_ = {};
cr.runtime = null;
cr.plugins_.Vinoos_Markets = function(runtime) {
this.runtime = runtime;
};
(function() {
function initialize_events(result) {
alert(result);
}
})();

<button onclick="initialize_events('Test Result');">Send Result</button>
&#13;
如何运行&#39; initialize_events&#39;通过单击按钮来从html中运行?
我无法访问编辑JavaScript文件。
答案 0 :(得分:13)
我无法访问编辑js文件。
然后你不能,完全停下来。对于包含它的匿名IIFE *,完全是私有的。您必须将其公开为全局,以便将其与onxyz
- 属性样式的事件处理程序一起使用(这需要修改JavaScript代码)。这是不使用它们的众多原因之一。
由于你不能在不修改JavaScript的情况下做到这一点,我将假设你克服了这个限制,并建议在可以修改JavaScript的时候做什么:
让IIFE挂钩按钮,如果您需要特定于按钮的信息来传递它,请使用data-*
属性:
var cr = {};
cr.plugins_ = {};
cr.runtime = null;
cr.plugins_.Vinoos_Markets = function(runtime) {
this.runtime = runtime;
};
(function() {
function initialize_events(result) {
alert(result);
}
document.getElementById("send-result").addEventListener("click", function() {
initialize_events(this.getAttribute("data-result"));
}, false);
}());
<button id="send-result" data-result="Test Result">Send Result</button>
注意:
addEventListener
的过时浏览器(例如IE8,这仍然是许多人的要求),请参阅this answer以获取跨浏览器事件挂钩功能。data-*
属性。getElementById
只是一个例子;在实践中,任何可以让你识别按钮的东西都是你需要的。您可以通过document.querySelector
使用完整的CSS选择器进行查找。 * IIFE =立即调用的函数表达式,例如(function() { /*...*/})();
(有时也被称为“内联调用的函数表达式”。有时也被错误地称为“自调用函数”,但它不是;它由定义它的代码调用,而不是由函数本身调用。)