【问题标题】:How to execute function on page?如何在页面上执行功能?
【发布时间】:2017-03-27 03:35:34
【问题描述】:

下面我用这个页面来测试http://nitroflare.com/view/A71F0994E20F2E0/security-privacy.jpg

以下脚本点击慢速下载并删除点击后出现的弹出广告。

我想调用它的第二次点击函数,而不是点击免费下载,它会首先弹出一个窗口,这是

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

【问题讨论】:

    标签: javascript google-chrome firefox greasemonkey tampermonkey


    【解决方案1】:
    (function (){
        $("#CountDownTimerContainer").show();
        console.log(0);
        startFreeDownload();
    })();
    
    function startFreeDownload(){
      console.log(1);
    }
    

    试试这个它应该适合你。

    【讨论】:

    • 与 OP 中的脚本相比,我看不出有什么不同。
    • 对我来说它的工作..你可以添加一个小提琴链接,以便我可以看看你的代码..
    • Greasemonkey 脚本可以在小提琴中使用吗? jsfiddle.net/h39ztuv1这是怎么做到的?
    • 不确定它是否有效仍然检查这个小提琴链接jsfiddle.net/KDjqN/3
    • 可能是因为在 jsfiddle 中是同一个命名空间,但在 GreaseMonkey 中不起作用。
    【解决方案2】:

    document.getElementById 返回一个没有hide() 方法的DOM 节点。

    手动使用 jQuery:$('#superbox-wrapper').hide() 或使用 waitForKeyElements,如其示例所示:

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

    此外,由于您将自己的 jQuery 注入页面并使用 @grant none,如果站点有自己的 jQuery,您可能需要使用 jQuery.noConflict()。

    【讨论】:

    • 超级框被当前脚本移除。我需要以某种方式致电startFreeDownload()
    • 这可能只是时间问题。由于您使用的是@grant none,请尝试在removeSuperbox 中添加startFreeDownload(),就在jNode.hide(); 行之后。
    • 这没有帮助。脚本如何知道 startFreeDownload() 是页面上的那个,而不是我(尚未)实现的脚本中的函数?
    • 查找javascript“范围”。无论如何,该功能可能还有其他要求。我会调查它,但我不会(太多)帮助某人违反网站的商业模式(可能还有 TOS),除非我知道该网站确实值得这样做。
    • 没有。如果这行得通,我告诉你早先尝试的代码就行了。您的脚本没有设置startFreeDownload() 所需的任何要求。重读this Q&A 以获得更可能的方法。任何人,这是我最后一次回答有关此特定网站/子主题的问题。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2013-03-05
    相关资源
    最近更新 更多