2013-12-15 3 views
0

Я просто разбираюсь в javascript и задаюсь вопросом, был ли способ реализовать это при посещении профиля твиттера вашего любимого сайта, он перейдет к ссылке/ссылкам, указанным в твиттере. Ниже я проверял Вердж и задавался вопросом, есть ли какой-нибудь способ посетить URL-адрес, указанный в первом твиттере, не нажимая его. Я действительно намереваюсь использовать этот скрипт почти как индекс, в который вы можете поместить ключевое слово в переменную и прокрутить твиты для конкретной строки слова/переменной, и он откроет ссылку/ссылки, найденные в этом твите, который соответствует вашей желаемой переменной ,Открытые ссылки с Javascript

я сделал некоторое рытье и посмотреть, что-то вдоль линий:

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

бы пройти через первый твит и получить ссылку URL. Я все еще не уверен, что это правильный путь. Я также не знаю, как улучшить функциональность, в котором, если чириканье было две ссылки, что бы открыть оба или только один, используя спичку(), чтобы ограничить открытие ссылок только из vrge.co

enter image description here

Для конкретная временная шкала выше, переменная будет установлена ​​на что-то вроде «фильмов» или «Anchorman», и когда вы перейдете в твиттер Вердера, скрипт откроет эту ссылку в твиттере с ключевыми словами, vrge.co/1bIeqHe Любая информация будет действительно полезной , Благодаря всем и счастливым праздникам!

ответ

1

, если у вас есть ссылка, вы можете просто сделать

window.location.href = linkvar; 

См http://ntt.cc/2008/01/21/5-ways-to-redirect-url-with-javascript.html для примера.

+0

Благодарим за быстрый ответ. Я не уверен, как хранить URL-адрес в переменной.Я имею в виду, что я буду хранить его как строку, а затем использовать строку выше, но я не уверен, как захватить ссылку из твита. Использует ли код, который я использую в вопросе, для выделения ссылки? Я просто бросил это вместе, потому что, осмотрев страницу, я увидел ссылку в классе 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, как вы, так как это будет относиться к чирикать как строку, а не объект JS

EDIT: Я не совсем уверен, что вы имеете в виду под «в отличие от встроенного фото сетки на слева от профиля твиттера? ', но я думаю, что это должно делать то, что вы хотите ...

Он будет проходить через ВСЕ твиты на временной шкале (а не только на видимых) и выбирать ссылки с помощью средств массовой информации' и '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); 

Надежда это это то, что вы ищете

+0

Спасибо за ответ! Это общая идея, но это только открывает ссылки твитов, которые имеют встроенные фотографии. Я использовал это и добавил функцию открытия окна с помощью linkURL, где заштрихованная секция, но даже при переходе от 0 до 1, что я бы предположил, это всего лишь первый твит, скрипт открыл другой прошлый твит, потому что последний твит не сделал, У меня есть фотография. Любые мысли о том, как пройти цикл по фактической шкале времени, а не встроенной сетке фотографий слева от профиля твиттера? Благодаря! – zweed4u

Смежные вопросы