如何自动处理javascript函数调用并包装/装饰它

时间:2014-08-26 10:24:09

标签: javascript html jsp

您好我现有的javascript代码存在问题。

背景是一些JSP标签自动包含JS功能,然后一些html元素需要运行这个功能。 但重点是需要使用的许多html元素都包含JS函数,并且很难修改每个单独的元素来配置它应该运行的函数。

让我们考虑一个简单的例子:我们有JSP Tag来生成表

<table id="automaticallyGeretatedId">
<tr>
<td></td>
</tr>
</table>

这包括一些JS函数

function removeItemFromTable(){
    //modify automaticallyGeretatedId
}
function addItemToTable(){
    //modify table, add values and so on..
}

然后我们有一些html外部按钮或/和div-s,其方法具有常量名称“clearData”,但JS是HTML页面的一部分 有时以这种方式(嵌入在Html中)

<script>
function clearData(){/*some code*/}
</script>

有时在包含文件中

function clearData(){ //some code
}

所以我的问题是:除了修改代码中的每个简单clearData之外,确保每次运行clearData函数时,函数removeItemFromTable()也会运行吗?

我的意思是我可以搜索clearData函数并在调用removeItemFromTable函数后附加吗?这个操作应该在哪里完成,最好的方法是什么?

让我们假设每次当clearData()函数出现时,函数removeItemFromTable()也会被包含在内。

1 个答案:

答案 0 :(得分:1)

最后我决定使用此链接技术描述:

Adding code to a javascript function programmatically

我设置了文件准备搜索功能clearData()

$( document ).ready(function() {
    decorateClearData();
});

和函数decorateClearData();

中的代码
function decorateClearData() {
    clearData = (function() {
    var cached_function = someFunction;

    return function() {
        cached_function.apply(this, arguments); // use .apply() to call it

        // and my new code:
        removeItemFromTable();
    };
}());
}

这是因为clearData是全局函数,也许这不是实用的方法,但我没有其他的想法。