使用 Javascript 更改现有的 onClick 函数

Posted

技术标签:

【中文标题】使用 Javascript 更改现有的 onClick 函数【英文标题】:Alter an existing onClick function with Javascript 【发布时间】:2013-10-31 23:24:58 【问题描述】:

我的查询是关于使用 javascript 更改页面上已存在的 onclick 函数的值。

有一个按钮。这个按钮有如下的onclick功能:

onclick="if (confirm('Yahdy Yahdy yah?'))  someFunction(); ; return false;"

我想使用 Javascript 将 onclick 函数更改为如下所示,或者提取 someFunction();并直接运行,而无需经过确认。据我了解,您无法通过脚本确认确认,因此我唯一的选择是运行 someFunction();直接地。我的问题是,我如何直接访问 someFunction(),因为 someFunction() 包含每次页面加载时随机生成的值。

onclick="someFunction();"

这基本上就是我想要的,所以我可以直接调用 onclick()。我很高兴使用 vanilla 或 jQuery 来解决这个问题。

TLDR:我想提取旧的 onclick 函数的一部分,并仅使用该部分创建一个新的 onclick 函数。

【问题讨论】:

我刚刚考虑的另一种解决方法是读取当前的 onclick 值,将其转换为字符串,查找我需要的位,并使用这些位创建一个新函数,然后将该函数分配给onclick。 在相关说明中,考虑使用此方法进行确认:***.com/questions/9334636/javascript-yes-no-alert/… 不确定这是否相关 - 我不控制旧的 onclick 功能的内容,我正在尝试在客户端修改它以删除他们的确认窗口。如果没有内部动态生成的 someFunction,我真的无法创建新的 onclick。 【参考方案1】:

你可以这样做:

var code = obj.onclick.toString();

这将为您提供分配给该点击处理程序的 javascript 代码,您可以对其进行搜索,找到您要查找的内容并将点击处理程序重新分配给其他内容。


我不知道这是否是最好的方法,但这里有一些对我有用的方法:

function nullConfirm()  return true;;

(function() 
    var obj = document.getElementById("test");
    var code = obj.onclick.toString();
    code = code.replace("confirm(", "nullConfirm(");
    var matches = code.match(/\(.*)\/);
    if (matches) 
        obj.onclick = function() 
            eval(matches[1]);
        
    
)();

【讨论】:

是的,我认为这可能是我最后的选择。嘿,至少我知道没有别的办法。哈哈,谢谢。

以上是关于使用 Javascript 更改现有的 onClick 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?

如何在 angularjs 控制器中包含现有的 javascript 列表

如何为现有的 Javascript 库创建 Angular 库包装器?

CefSharp 从现有的 Javascript 函数中获取结果

如何将更改保存到现有的 excel 文件,而不是创建包含更改的 txt 文件?

如何从现有的 JavaScript 库生成 .d.ts “类型”定义文件?