我正在寻找一个将变量传递给函数的函数(除了通知e):
window.addEventListener("message", function(e));
答案 0 :(得分:1)
您可以使用bind功能
document.getElementById('btn').addEventListener('click', add.bind(this,10,11));
function add(a,b){
console.log(a,b)
}
答案 1 :(得分:1)
您可以使用.bind()
添加n个自定义参数。它将按照.bind()
function myCallback(customArg, e) {
...
}
window.addEventListener("message", myCallback.bind(this, customArg), false);
function myCallback(customArg1,customArg2,customArg3,customArg4, e) {
alert(customArg1 + " " + customArg2 + " " + customArg3 + " " + customArg4)
}
$('button').click(myCallback.bind(this, 'hello', 'there', 'custom', 'args'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click Me!</button>
答案 2 :(得分:0)
使用闭包。它将捕获变量并将其保留在处理函数的范围内。
function handler_factory(myVar) {
function handler(e) {
e.preventDefault();
console.log(myVar);
}
return handler;
}
addEventListener("message", hander_factory("value of myVar"));
答案 3 :(得分:0)
你可以这样做 - 在回调函数中调用自定义函数。
window.addEventListener("message", function(e){ customFunction(e,variable) });
答案 4 :(得分:0)
你可以做类似的事情,并且用一个对象添加额外的参数甚至参数非常简单。
var element = document.querySelector('input');
element.addEventListener('click', handle_parameter, false);
element.customParam = 'Custom Param';
var object = {};
object.name = "Chris";
object.surname = "Beckett";
element.customParam2 = object;
function handle_parameter(evt){
document.getElementById("param1").innerHTML = evt.target.customParam;
document.getElementById("param2").innerHTML = evt.target.customParam2.name + " " + evt.target.customParam2.surname;
}
&#13;
<input type="button" value="test" />
<p id="param1"></p>
<p id="param2"></p>
&#13;
答案 5 :(得分:-1)
在脚本中写下以下代码
var proxy = function (method, scope) {
var aArgs = Array.prototype.slice.call(arguments, 2);
return function () {
return method.apply(scope, Array.prototype.slice.call(arguments, 0).concat(aArgs));
};
}
并调用您的事件监听器。在下面的代码中,您可以使用它只是您的实例或范围
window.addEventListener( “消息”,代理(YOURFUNCTIONNAME,为此,ARG1,ARG2,ARG3));