【发布时间】:2014-07-23 15:29:20
【问题描述】:
在我的页面中有一个属于同一个域的框架。这个框架的内容是多种多样的,并且相对不可预测。每当用户单击执行帖子的按钮(在框架内)时,我都需要执行一个执行某些 UI 任务的函数。问题是由于我无法控制的原因,我无法编辑这些帧的来源。其中一些按钮是简单的表单提交按钮,但其他按钮不直接提交表单,而是有一个 onclick 处理程序来执行一些检查并可能提交。
问题是:如何检测这些 onclick 处理程序之一是否调用了 form.submit()?如果没有处理程序,那么显然我可以为 onsubmit() 设置处理程序,但并非所有这些按钮都如此。
这是我目前的代码:
function addEventBefore(element, type, before, after) {
var old = element['on' + type] || function() {};
before = before || function() {};
after = after || function() {};
element['on' + type] = function () {
before();
old();//I can't modify this old onclick handler
after();
};
}
function setup() {
console.log('setup');
}
function takedown() {
// In this method, I want to know if old() caused a form submit
console.log('takedown');
}
function $includeFrames(jQuery, selector) {
return jQuery(selector).add(jQuery('iframe').contents().find(selector));
}
var a = $includeFrames($, 'input[type="submit"], input[type="button"]').each(function() {
var elem = $(this)[0];
addEventBefore(elem, 'click', setup, takedown);
});
【问题讨论】:
标签: javascript forms http-post