Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bookmarklet:单击以获取来自主机域的随机指定链接_Javascript_Html_Bookmarklet - Fatal编程技术网

Javascript bookmarklet:单击以获取来自主机域的随机指定链接

Javascript bookmarklet:单击以获取来自主机域的随机指定链接,javascript,html,bookmarklet,Javascript,Html,Bookmarklet,tl;dr:在新选项卡中打开的书签:来自指定域的随机链接(具有指定的多个html类)和与当前登录名一起使用的代码。多谢各位 屠宰代码的简短版本: javascript: ( var % 20 site = domain.com function() { window.location.host == site void(window.open(document.links[Math.floor(doc

tl;dr:在新选项卡中打开的书签:来自指定域的随机链接(具有指定的多个html类)和与当前登录名一起使用的代码。多谢各位

屠宰代码的简短版本:

    javascript:
    (
        var % 20 site = domain.com
        function() {
            window.location.host == site
            void(window.open(document.links[Math.floor(document.querySelectorAll("a.class1, a.class2"))].href, '_blank'))
        }();
//beautified with: http://jsbeautifier.org/




与之相关的人: 我已经搜索了一段时间,甚至考虑过交换服务,但尽管有些服务接近或类似于我的特定请求,但没有一个服务能够满足请求所要求的所有内容

  • 即使当前没有来自所述域的页面打开,也在特定域上执行脚本。如果需要登录身份验证以获取执行所需的信息或数据,请与现有会话一起读取或工作

  • 从一个特定的域主机获取该域上所有链接中的一个随机链接,该链接具有特定的html类(或者实际上是其他类型),最好使用css选择器

  • 在新选项卡中打开结果

  • 通过消除这些相似之处,结果是这样的:

        //bookmarklet
    javascript:
    //anonymous function+ wrapped code before execution
    (
    // function global variables for quick substitution
      var %20 site = domain.com
    function(){
    //set domain for script execution
    window.location.host == site
    //open new tab for
    void(window.open(document.links
    //random link
    [Math.floor
    //with specific classes (elements found with css selectors)
    (document.querySelectorAll("a.class1, a.class2"))
    ]//end random-query
    .href,'_blank' //end page-open
    )//end link-open
    )//end "void"
    }//end function defintion
    //execute
    ();
    //(tried) checked with: 
    //http://www.javascriptlint.com/online_lint.php
    
    最后,我至多掌握了css的基本知识。如果此请求有任何人在gtfo模式下使用桌面、掌上电脑或其他方式,我深表歉意。令人遗憾的是,StackExchange中显然没有“警告:我自己动手做这件事”的标签。然而,我仍然希望答案能更深入地解释每一次修正和修改的原因和内容


    现在感谢您的时间和努力。

    理论上,以下代码应该满足您的要求:

    window.addEventListener('load', function ( ) {
        var query = 'a.class1[href], a.class2[href]';
        var candidates = document.querySelectorAll(query);
        var choice = Math.floor(Math.random() * candidates.length);
        window.open(candidates.item(choice).href, 'randomtab');
    }, true);
    window.location.href = 'http://domain.com';
    
    但事实并非如此,因为跨页面卸载保留事件侦听器的可能性可能会被滥用,浏览器会保护您免受此类滥用

    相反,您可以手动加载您选择的域,然后单击一个更简单的bookmarklet,其代码如下:

    var query = 'a.class1[href], a.class2[href]';
    var candidates = document.querySelectorAll(query);
    var choice = Math.floor(Math.random() * candidates.length);
    window.open(candidates.item(choice).href, 'randomtab');
    
    您可以将上述内容封装在
    javascript:(function(){
    ..
    })()中和缩小与以前一样,但如果你只是缩小它,只在前面打一个
    javascript:
    ,它已经可以工作了


    我理解你是一个绝对的初学者,并且发布“DIY”代码的情况,但是我仍然不打算一步一步地解释为什么这个代码有效而你的代码无效。上面代码的第一个版本对于初学者来说很复杂,而且问题中代码的问题列表太长,无法讨论所有问题。通过学习更多的Javascript,你会过得更好;一个很好的教程资源是。

    你在问什么?我们是否可以为你编写代码?@Pomax:抛开所有借口,当然可以,为什么不可以。我主要想看看是否有人能够理解并解释为什么上面的jslint站点不允许在代码中声明变量。这和我复制粘贴的基本工作是否等同于基本理解。不能撒谎。没有,除了我之外,没有其他居民代码爱好者。谢谢。我从中得到;您的第一个代码类似于“onload window,do this function”。尚未学习css属性,但我怀疑这是
    “class[href]”
    。建议换行。不是以变量形式定义的,
    “randomtab”
    是默认内置的吗?类似于“onmouseheel”“etc,但用于DOM类型请求。搜索几乎没有结果,除非您计算jquery。至于那些对死刑感到疑惑的人?首先只重定向到域。第二个只适用于当前页面上的链接。是的,我的第一个版本首先告诉窗口在加载新页面后应该做什么,然后再加载新页面
    a.class1[href]
    表示“选择所有带有class
    class1
    且具有
    href
    属性的
    标记”。因此,
    class1
    是类的名称,而点
    表示您正在寻找一个类
    randomtab
    是新打开的选项卡的自定义名称,它是
    窗口。open
    需要作为其第二个参数。