Я работаю над созданием Javascript (в браузере) бота Instagram. Однако я столкнулся с проблемой.
Если вы запустите этот скрипт, будет вызвана первая функция, и страница будет перенаправлена на «https://www.instagram.com/explore/tags/samplehashtag/», а вторая функция будет вызвана сразу после (по предыдущему URL до того, как страница изменится на новый URL). Есть ли способ заставить вторую функцию вызываться после полной загрузки второго URL?
Я пытался установить его для метода Window setInterval () в течение длительного периода времени, window.onload и нескольких других методов. Тем не менее, я не могу заставить что-либо работать. Есть ли шанс, что у кого-то есть решение?
Это мое первое расширение chrome и мой первый настоящий проект, поэтому я могу упустить что-то простое ..
манифест. json
{
"name": "Inject Me",
"version": "1.0",
"manifest_version": 2,
"description": "Injecting stuff",
"homepage_url": "http://danharper.me",
"background": {
"scripts": [
"background.js"
],
"persistent": true
},
"browser_action": {
"default_title": "Inject!"
},
"permissions": [
"https://*/*",
"http://*/*",
"tabs"
]
}
inject . js
(function() {
let findUrl = () => {
let hashtag = "explore/tags/samplehashtag/";
location.replace("https://www.instagram.com/" + hashtag);
}
findUrl();
})();
background. js
// this is the background code...
// listen for our browerAction to be clicked
chrome.browserAction.onClicked.addListener(function(tab) {
// for the current tab, inject the "inject.js" file & execute it
chrome.tabs.executeScript(tab.ib, {
file: 'inject.js'
});
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(tab.ib, {
file: 'inject2.js'
});
});
inject2. js
(function() {
if (window.location.href.indexOf("https://www.instagram.com/explore/tags/samplehashtag/") != -1){
let likeAndRepeat = () => {
let counter = 0;
let grabPhoto = document.querySelector('._9AhH0');
grabPhoto.click();
let likeAndSkip = function() {
let heart = document.querySelector('.glyphsSpriteHeart__outline__24__grey_9.u-__7');
let arrow = document.querySelector('a.coreSpriteRightPaginationArrow');
if (heart) {
heart.click();
counter++;
console.log(`You have liked ${counter} photographs`)
}
arrow.click();
}
setInterval(likeAndSkip, 3000);
//alert('likeAndRepeat Inserted');
};
likeAndRepeat();
}
})();