Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Chrome Extension中的内容脚本中唯一标识页面上的HTML元素?_Javascript_Html_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 如何从Chrome Extension中的内容脚本中唯一标识页面上的HTML元素?

Javascript 如何从Chrome Extension中的内容脚本中唯一标识页面上的HTML元素?,javascript,html,google-chrome,google-chrome-extension,Javascript,Html,Google Chrome,Google Chrome Extension,这是我的困境。我的Chrome扩展首先需要从内容脚本扫描一个网页(正在注入),查找textarea元素,然后在以后的迭代中能够识别页面上的这些元素 我最初的假设是,拥有HTML元素的id和name属性将在页面上唯一地标识它,但事实并非如此。我遇到的页面(尤其是Facebook的“Like”按钮iFrame)可能有多个textarea元素,没有id和相同的name 所以我的代码是: var frmTxa = document.getElementsByTagName("textarea"); if

这是我的困境。我的Chrome扩展首先需要从内容脚本扫描一个网页(正在注入),查找
textarea
元素,然后在以后的迭代中能够识别页面上的这些元素

我最初的假设是,拥有HTML元素的
id
name
属性将在页面上唯一地标识它,但事实并非如此。我遇到的页面(尤其是Facebook的“Like”按钮iFrame)可能有多个
textarea
元素,没有
id
和相同的
name

所以我的代码是:

var frmTxa = document.getElementsByTagName("textarea");
if(frmTxa)
{
    for(var i = 0; i < frmTxa.length; i++)
    {
        objCollect.id = frmTxa[i].id;
        objCollect.name = frmTxa[i].name;

        addCollect.push(objCollect);
    }
}
var frmTxa=document.getElementsByTagName(“textarea”);
if(frmTxa)
{
对于(变量i=0;i
创建重复项


所以我的问题是,HTML元素是否有一个属性可以在页面上唯一地标识它?如果没有,怎么做呢?

为什么不添加一个新的
数据-*
属性,比如
data identifier=“where”
(或者更具体的东西),这样您就可以控制唯一性了?您只需将该属性存储在
addCollect
array@Ian:但是我怎么知道我的数据元素不会与页面上的现有属性产生冲突呢?如果您使其名称足够具体,就不会有任何冲突。这可能很愚蠢,但给它一种“名称空间”-
data-c0000fd-textarea-id=“随便什么”
even@Ian:是的,我也是这么想的。好奇的是,
tabIndex
属性会自动设置吗?@c0000fd我不知道你说的
tabIndex
自动设置是什么意思-没有默认值,所以如果没有设置,它就没有
tabIndex
。此外,只要元素在DOM中的顺序相同,
getElementsByTagName
将以相同的顺序返回它们。上面关于XPath的评论可能会有所帮助