从HTML文件中调用Javascript函数

4
我有这段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>

如何通过点击按钮从html运行'initialize_events'函数?

我无法编辑JavaScript文件。


6
很遗憾,你不能这样做。该函数只在其自己的范围内声明,如果没有编辑js文件,就无法访问它。 - Bellian
1
没有看到你没有访问js文件的权限。您无法访问在私有范围内声明的函数(在IIFE函数内部声明)。 - n1kkou
1个回答

13
我无法编辑js文件。

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,这对许多人来说仍然是必需的),请参见此答案以获取跨浏览器事件挂钩函数。
  • 如果数据在IIFE中而不是按钮中,则可以直接使用它,而不必使用data-*属性。
  • 给按钮一个ID并使用getElementById只是一个示例;在实践中,任何让您识别按钮的都可以。您可以通过document.querySelector查找使用完整的CSS选择器。

* IIFE = 立即调用的函数表达式,例如 (function() { /*...*/})(); (也有时称为 “内联调用函数表达式”); 也有时错误地称为“自调用函数”,但它不是; 它是由定义它的代码调用的,而不是函数本身调用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接