通过 Chrome 扩展查看点击数据
View onclick data via Chrome Extension
我想从 a
标签中提取 onclick
信息。我知道如何正常执行此操作,并且我已经确认它可以通过控制台工作。但是,它 returns null
当尝试通过扩展时。这是否可以通过扩展实现?如果可以:必须采用什么奇怪的方法?
示例:
页面上:<a href="#" onclick="something(stuff,otherstuff)">text</a>
我希望能够抓住那个 something(stuff,otherstuff)
。
但是,纯 JS 不起作用:String(document.getElementsByTagName("a")[10].onclick)
jQuery也没有:String($(".tableclass").find("tbody").find("a")[10].onclick)
进入控制台后,上述两种方法都有效。
这就是您要更改 link 的 href 的意思吗?你可以这样做:
html:
<a href='foo' class='link-to-swap'>link</a>
javascript:
$(document).ready(function(){
$('.link-to-swap').click(function(e){
e.preventDefault();
var grabbedData = $(this).attr('data-id')
$(this).attr('href',grabbedData)
return false
})
})
这是 fiddle:
https://jsfiddle.net/cp6x9pf5/1/
首先,您永远无法读取页面设置的onclick
属性,因为扩展代码运行在isolated scope.
其次,即使代码没有被隔离,<a onclick="foo"></a>
的 onclick
属性 也可能没有您期望的 foo
值。这是因为 属性 与 HTML 属性不同。
因此,如果您想访问 onclick
属性的字符串值,您可以并且应该 使用 linkElement.getAttribute('onclick');
。
我想从 a
标签中提取 onclick
信息。我知道如何正常执行此操作,并且我已经确认它可以通过控制台工作。但是,它 returns null
当尝试通过扩展时。这是否可以通过扩展实现?如果可以:必须采用什么奇怪的方法?
示例:
页面上:<a href="#" onclick="something(stuff,otherstuff)">text</a>
我希望能够抓住那个 something(stuff,otherstuff)
。
但是,纯 JS 不起作用:String(document.getElementsByTagName("a")[10].onclick)
jQuery也没有:String($(".tableclass").find("tbody").find("a")[10].onclick)
进入控制台后,上述两种方法都有效。
这就是您要更改 link 的 href 的意思吗?你可以这样做:
html:
<a href='foo' class='link-to-swap'>link</a>
javascript:
$(document).ready(function(){
$('.link-to-swap').click(function(e){
e.preventDefault();
var grabbedData = $(this).attr('data-id')
$(this).attr('href',grabbedData)
return false
})
})
这是 fiddle: https://jsfiddle.net/cp6x9pf5/1/
首先,您永远无法读取页面设置的onclick
属性,因为扩展代码运行在isolated scope.
其次,即使代码没有被隔离,<a onclick="foo"></a>
的 onclick
属性 也可能没有您期望的 foo
值。这是因为 属性 与 HTML 属性不同。
因此,如果您想访问 onclick
属性的字符串值,您可以并且应该 使用 linkElement.getAttribute('onclick');
。