【问题标题】:Different ways to click a hyper link programmatically?以编程方式单击超链接的不同方法?
【发布时间】:2015-10-19 12:24:29
【问题描述】:

还有哪些其他方法可以以编程方式单击页面上的文本链接?该链接没有 ID,也不会有 ID。 示例链接如下所示:

<div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">
<a href="file/files/now.pdf">Click Here</a>   
</div>

这是我可以做到的一种方法,但想知道更多点击它的方法。

var els = document.getElementsByTagName('a');
    for (var i = 0, l = els.length; i < l; i++) 
    {
       var el = els[i];
       if (el.text === 'Click Here') 
       {
           el.click()
       }
    }

【问题讨论】:

  • The link does not have a ID and will not have one 为什么不呢?这将是最有效的代码。遍历整个 DOM 树效率不高。如果您的相关 标记包含在定义更明确的区域中(例如,具有 ID 或类的 div),则您只能搜索 DOM 的那部分。
  • @Eric J. 但是如果我们有 10000 个 ID 怎么办。给他们每个人一个ID会更好。想一想:全局范围内将有 10000 个变量,因为每个具有 id 的元素都会创建 全局范围内的变量,其名称为它的 id。只需在控制台中输入window['comment-51311540'],您就会看到带有评论的 tr 元素! :D
  • @EricJ。更新的帖子。没有ID的原因是因为它是自动生成的下载文件的链接。
  • 如果您有 10000 个 id,我会在您打算支持的最低端浏览器上仔细测试您的页面设计。而且使用 ID 仍然比扫描大量 DOM 更有效。
  • Reason no ID is because it is auto generated link for downloading a file 然后也自动生成一个 ID 并将其传递给您的 JavaScript,或者也生成 JavaScript 的相关部分。

标签: javascript c# hyperlink


【解决方案1】:

它不能有一个ID?那将是IMO的最佳路线。次优方法:

  1. 分配一个班级,按班级查找

  1. 为父对象分配一个id或类,并查找第一个“a”子对象

【讨论】:

  • 更新帖子。没有ID的原因是因为它是自动生成的下载文件的链接。
  • 链接是别人的代码吗?例如,您没有或无法更改源代码的地方?如果是这样,唯一的方法可能是扫描整个文档。
  • 我认为您发布的代码应该可以工作。如果是我,如果我只想下载网页中列出的文件,我可能不会使用 javascript。 grep、sed、awk、wget、curl 等命令行工具也可以使用。
  • @user1389596 好吧,如果用户使用脚本可以说.... 作为书签,他们将避免使用命令行。但如果只是为了简单的抓取,最好使用 Command lin
猜你喜欢
  • 1970-01-01
  • 2013-12-02
  • 2010-10-16
  • 2012-02-23
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 2010-10-28
  • 2018-06-19
相关资源
最近更新 更多