从html文件调用Javascript函数

时间:2017-07-26 09:00:28

标签: javascript html function

我有这个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;
&#13;
&#13;

如何运行&#39; initialize_events&#39;通过单击按钮来从html中运行?

我无法访问编辑JavaScript文件。

1 个答案:

答案 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以获取跨浏览器事件挂钩功能。
  • 如果您拥有IIFE中的数据而不是按钮,则可以直接使用它而不是使用data-*属性。
  • 为按钮提供ID并使用getElementById只是一个例子;在实践中,任何可以让你识别按钮的东西都是你需要的。您可以通过document.querySelector使用完整的CSS选择器进行查找。

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