使用Javascript注入访问网站上的文本

Access text on a website using a Javascript injection

本文关键字:文本 网站 访问 Javascript 注入 使用      更新时间:2023-09-26

我想使用javascript注入访问网站上的特定文本位。

通过HTML,然而,我发现大部分是缺乏Id的,所以我不知道如何访问文本。

例如,以下两行HTML:

<td valign="top" width="100%" >
<h1>My example heading</h1>

还有办法知道这段文字在说什么吗?

还有,如果我知道这段文字的意思,有没有办法找出下面这段文字…

<td valign="top" width="100%" >
<h1>You are trying to work out:</h1>
<h1>This text</h1>

哦,这还不算太糟。您将需要这样做:

var els = document.getElementsByTagName("td");
var text1 = "";
var text2 = "";
for (var i = 0; i < els.length; i++) {
    if (els[i].width == "100%" && els[i].getAttribute("valign") == "top") {
        var h1s = els[i].getElementsByTagName("h1");
        if (h1s.length > 0) text1 = h1s[0].innerHTML;
        if (h1s.length > 1) text2 = h1s[1].innerHTML;
    }
}

现在,如果有很多表,您可能需要将第一行替换为:

var els = document.getElementsByTagName("table")[2].getElementsByTagName("tr")[4].getElementsByTagName("td");

可以理解为:Get table elements, select the third。获取该表的所有行,选择第五行。得到这一行的所有单元格。寻找所有100%宽度和顶部对齐的,看看它们是否有h1。

小提琴:http://jsfiddle.net/JUK5R/26/

这取决于页面。

例如,如果你总是对第三个H1感兴趣,那么你可以(使用JQuery的例子,但没有它也很容易做到):

h1s = $("h1");
myh1 = h1s[2];

如果,然而,页面是直接生成的,你将不得不找到一些可重复的方式来总是得到你的元素(例如,获得id xxx的表,遍历行,直到你找到一个文本yyy,并采取第二个div子元素)。

这很可能不会100%有效…但是真的没有别的办法了。

EDIT:例如,要执行我上面所说的操作,您可以执行

// Get all the tds of the table with id tableid
table = $("#tableid td");
// Go through the td
for (var i=0; i<tds.length; i++)
    {
    // If the content of the cell matches some pattern
    if ($(rows[i]).text().match(/somestring/))
        {
        // Get the span children of the td
        divchildren = $(rows[i]).children("span");
        // Take the 2nd
        requiredText = $(divchildren[1]).text();
        }
    }