使用 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 函数中获取结果