如何将按钮的onclick函数转换为文本以提取其中URL?
提取按钮onclick属性中的URL方法
第一步:获取onclick函数的字符串形式
元素的.onclick属性返回的是函数对象,调用.toString()方法就能将其转为包含函数代码的纯文本字符串,替换你代码中的???即可:
const onclickContent = document.querySelectorAll('.btn-primary')[3].onclick.toString();
第二步:从字符串中提取JSON参数并解析URL
假设onclick对应的函数调用格式为funcName({key1: value1, url: '目标地址', ...}),可以通过正则匹配出参数对象,再解析提取URL:
// 匹配括号内的JSON对象内容 const paramMatch = onclickContent.match(/\(({[\s\S]*?})\)/); if (paramMatch) { // 若对象内用单引号,先替换为双引号以符合JSON格式 const validJson = paramMatch[1].replace(/'/g, '"'); const params = JSON.parse(validJson); // 替换为实际存储URL的键名 const targetUrl = params.url; console.log(targetUrl); }
特殊情况处理
如果参数对象格式不标准(比如键名未加引号),可以使用eval解析(仅在信任的页面环境下使用,避免安全风险):
// 截取函数调用的参数部分 const paramPart = onclickContent.slice(onclickContent.indexOf('(') + 1, onclickContent.lastIndexOf(')')); const params = eval(`(${paramPart})`); const targetUrl = params.url; console.log(targetUrl);
内容的提问来源于stack exchange,提问作者dwilbank
相关产品推荐
相关产品推荐

