2013-12-15 74 views
0

我只是在修改一些javascript,并想知道是否有一种方法来实现访问您最喜爱的网站的Twitter个人资料时,它会转到推文中给出的链接/链接。下面我正在检查边缘,并想知道是否有任何方式访问第一条推文中给出的网址而不点击它。我真的打算使用这个脚本几乎作为一个索引,你可以把一个关键字放在一个变量中,并且通过特定单词/变量字符串的tweets循环,并且它会打开该tweet中找到的与你想要的变量匹配的链接/链接。用Javascript打开链接

我做了一些挖掘和看的线沿线的东西:

for (var i = 0; i < 1; i++) { 
    tweet[i] = document.getElementsByClassName("js-tweet-text")[i].innerHTML; 
} 

将经过第一鸣叫并获取URL链接。我仍然不确定这是否正确。我也不知道如何改进的功能,其中,如果鸣叫有两个环节,将通过使用火柴()来限制链接开幕仅从vrge.co

enter image description here

对于打开两个或仅一个在上面的特定时间线上,变量将被设置为诸如“电影”或“主持人”之类的东西,并且当到达Verge的Twitter时,脚本将在关键字的鸣叫中打开该链接,vrge.co/1bIeqHe 任何见解都将是真正有用的。感谢大家和节日快乐!

回答

1

,如果您有链接你可以做一个

window.location.href = linkvar; 

为例见http://ntt.cc/2008/01/21/5-ways-to-redirect-url-with-javascript.html

+0

感谢您的快速响应。我不确定如何将网址存储在变量中。我的意思是理解我将它存储为一个字符串,然后使用上面的代码行,但我不确定如何从推文中获取链接。我在问题中使用的代码是否在单独链接时起作用?我只是把它们扔在一起,因为在检查页面时,我看到了js-tweet-text类中的链接。另外,如果推文嵌入了两个链接,我该如何解决这个问题?再次感谢! – zweed4u

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时间线 - 链接“ - 这避免了标签和句柄。

//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); 

希望这就是你想要的

+0

感谢您的回应!这是一般想法,但这只能打开包含嵌入照片的推文的链接。我使用了这个功能,并使用linkURL添加了一个窗口打开函数,即使在从0到1循环时(我认为这只是第一条推文),该脚本打开了一条不同的过去推文,因为最近的推文并未“没有照片。任何关于如何循环浏览实际时间线的想法,而不是Twitter的个人资料左侧的嵌入式照片网格?谢谢! – zweed4u