我只是在修补一些javascript,并想知道是否有办法实现,当访问你最喜欢的网站的Twitter个人资料时,它会转到推文中给出的链接/链接。下面我检查了Verge,并想知道是否有任何方法可以访问第一条推文中给出的网址而不点击它。我真的打算使用这个脚本几乎作为一个索引,你可以在其中将一个关键字放在一个变量中并循环播放特定单词/变量字符串的推文,它会打开在该推文中找到的与你想要的变量匹配的链接/链接。
我做了一些挖掘,看到了类似的东西:
for (var i = 0; i < 1; i++) {
tweet[i] = document.getElementsByClassName("js-tweet-text")[i].innerHTML;
}
将通过第一条推文获取网址链接。我仍然不确定这是否是正确的方法。我也不知道如何改进功能,如果推文有两个链接,它会打开两个或只使用一个匹配()来限制仅从vrge.co开始的链接
对于上面的特定时间轴,变量将被设置为类似“电影”或“'Anchorman”的东西,当进入Verge的twitter时,脚本会在推文中打开带有关键字{{3}的链接的链接} 任何见解都会非常有用。感谢所有节日快乐!
答案 0 :(得分:1)
如果你有链接,你可以做一个
window.location.href = linkvar;
有关示例,请参阅http://ntt.cc/2008/01/21/5-ways-to-redirect-url-with-javascript.html。
答案 1 :(得分:1)
你需要另一个循环遍历每条推文中的所有链接,使用getAttribute方法获取每个链接的目的地(href):
for (var i = 0; i < 1; i++) {
tweet[i] = document.getElementsByClassName("js-tweet-text")[i];
var links = tweet[i].getElementsByTagName("a");
for (var j = 0; j < links.length; j++) {
var linkURL = links[j].getAttribute("href");
//do something with linkURL here
}
}
注意:您不需要像现在这样使用innerHTML属性,因为这会将tweet视为字符串,而不是JS对象
编辑:我不太确定你的意思'而不是Twitter个人资料左侧的嵌入式照片网格? ',但我认为这应该做你想要的......
它将在时间轴(不仅仅是可见的)中查看所有推文,并选择带有“媒体”类和“twitter-timeline-link”的链接 - 这可以避免使用主题标签和句柄。
//Declare helpful functions to get elements by xpath
getElementsByXpath = function (path, doc = document) {
return document.evaluate(path, doc, null, XPathResult.ANY_TYPE, null);
};
getElementByXpath = function (path, doc = document) {
return document.evaluate(path, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
};
console.log("Starting...");
var tweetsXpath = "//li[contains(@id,'stream-item-tweet')]";
var linksXpath = "//a[contains(@class,'twitter-timeline-link') and contains(@class,'media')]";
var tweets = getElementsByXpath(tweetsXpath);
console.log("Tweets: " +tweets); //tweets is an XPathResult object. We can iterate over this.
var tweet = tweets.iterateNext(); //get first tweet
while(tweet != null){
var links = getElementsByXpath(linksXpath, tweet);
var link = links.iterateNext(); //get first link
while(link != null) {
var linkURL = link.getAttribute("href");
//do something with linkURL here
console.log("Found media link in tweet - URL: " + linkURL);
link = links.iterateNext(); //move to next link
}
tweet = tweets.iterateNext(); //move to next tweet
}
console.log("Done");
如果您只想处理可见的推文,请注释掉这4行:
var tweet = tweets.iterateNext(); //get first tweet
while(tweet != null){
...
tweet = tweets.iterateNext(); //move to next tweet
}
并更改
var links = getElementsByXpath(linksXpath, tweet);
到
var links = getElementsByXpath(linksXpath);
希望这就是你要找的东西