Нужно нажать Popup с Gm скриптом, который не всегда есть
У меня все еще есть проблема, нажимая всплывающую кнопку на сайте аукциона, которая появляется, только если вы выиграли аукцион. Это всплывающее окно кажется проблемой. Мне удалось частично получить помощь в " Нужно нажать кнопку ставки с помощью скрипта Grease monkey", я могу получить кнопки ставки, но всплывающее окно все еще остается проблемой. Xpath для всплывающего окна:
.//*[@id='ctl00_mainContentPlaceholder_Button3' ]
И сценарий, который я использую в настоящее время:
// ==UserScript==
// @name click popup try1.3
// @include http://www.trada.net/*
// ==/UserScript==
// ctl00_mainContentPlaceholder_Button3
function PopClick ()
{var PopBtn1=document.getElementById("ctl00_mainContentPlaceholder_Button3");
alert('try1');
PopBtn1.click (1);
alert('finished');
};
PopClick();
Но проблема, кажется, в том, что скрипт не остается активным на странице в ожидании всплывающего окна, я думаю, если я смогу заставить его "ждать" появления всплывающего окна, он должен работать. Я очень новичок в GM, так что извините, если есть простые ошибки. Мне очень помогли такие люди, как Брок Софар, который показывает мне веревки. Медленно, но верно я получаю навык. Удалите оповещения, я просто использовал их, чтобы посмотреть, выполняются ли они.
1 ответ
Простейшим решением было бы запустить эту функцию, скажем, каждую секунду, таким образом "ожидая" появления всплывающего окна:
setInterval(PopClick, 1000);
Также лучше переписать PopClick для проверки наличия элемента перед вызовом click, например так:
function PopClick () {
var PopBtn1=document.getElementById("ctl00_mainContentPlaceholder_Button3");
if(PopBtn1) {
PopBtn1.click ();
// It is also makes sense to clear interval here. see docs for setInterval/clearInterval please :)
}
};
Может быть, это поможет вам с проблемой замораживания.
Однако более правильным способом было бы настроить прослушиватель MutationEvent. Поскольку вы используете Firefox, он должен работать нормально:
function click_if_popup(evt) {
if(evt.target.hasAttribute('id') && evt.target.getAttrubute('id') =="ctl00_mainContentPlaceholder_Button3")
evt.target.click();
}
document.addEventListener('DOMNodeInsertedIntoDocument', click_if_popup);
Извините, я не тестировал этот код: я просто хотел дать вам общее представление о том, где копать.