0

В следующей статье я использую эту страницу для тестирования http://nitroflare.com/view/A71F0994E20F2E0/security-privacy.jpgКак выполнить функцию на странице?

Нижеприведенный скрипт нажимает на Slow Download и удаляет всплывающее объявление, которое появляется после нажатия.

Вместо того, чтобы нажать на скачать бесплатно, который будет первым всплывающее окно, я хочу назвать свою вторую функцию щелчка, которая

function() { 
    $(this).hide(); 
    $("#CountDownTimerContainer").show(); 
    startFreeDownload(); 
} 

Мой сценарий выполняет $("#CountDownTimerContainer").show() но он не выполняет startFreeDownload() по какой-то причине.

Вопрос

Как я могу назвать startFreeDownload(), который находится на странице?

// ==UserScript== 
// @name  NitroFlare 
// @namespace https://nitroflare.com/ 
// @description https://nitroflare.com/ 
// @include  https://nitroflare.com/* 
// @version  1 
// @grant  none 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 
// @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 
// ==/UserScript== 

function SkipId(objId){ 
    var oId = document.getElementById(objId); 
    oId.click(); 
} 

window.onload = function(){ 
    SkipId('slow-download'); 
}; 

waitForKeyElements("div.superbox-wrapper", removeSuperbox); 

function removeSuperbox() { 
    document.getElementById('superbox-wrapper').hide(); 
} 

$("#CountDownTimerContainer").show(); 
startFreeDownload(); 

ответ

2

document.getElementById возвращает узел DOM, который не имеет метода hide().

Либо использовать JQuery вручную: $('#superbox-wrapper').hide() или использовать waitForKeyElements, как показано в примере:

function removeSuperbox(jNode) { 
    jNode.hide(); 
} 

Кроме того, поскольку вы инъекционного свой собственный Jquery на страницу и использовать @grant none вам, возможно, придется использовать jQuery.noConflict(), если сайт имеет свой собственный jQuery.

+0

Супер-окно удаляется текущим скриптом. Мне нужно как-то вызвать 'startFreeDownload()'. –

+0

Это может быть просто вопрос времени. Поскольку вы используете '@grant none', попробуйте добавить' startFreeDownload() 'внутри' removeSuperbox', сразу после строки 'jNode.hide();'. –

+0

Это не помогло. Как известно скрипту «startFreeDownload()» - это тот, что на странице, а не функция, которую я (еще не) реализовал в моем скрипте? –

0
(function(){ 
    $("#CountDownTimerContainer").show(); 
    console.log(0); 
    startFreeDownload(); 
})(); 

function startFreeDownload(){ 
    console.log(1); 
} 

Попробуйте это Он должен работать для вас.

+0

Я не вижу ничего другого по сравнению со сценарием в OP. –

+0

Для меня его работа .. вы можете добавить ссылку на скрипку, чтобы я мог посмотреть ваш код. –

+1

Сценарии Greasemonkey работают в скрипке? https://jsfiddle.net/h39ztuv1/ Как это делается? –

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