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知识。我很抱歉,如果这个请求有任何人在www.fofo模式下进行翻版,手掌或其他方式。很遗憾显然没有"警告:我在StackExchange中DIY这个东西" 。但是,我仍然希望得到一些深入解释原因以及每次修正和修改的答案。
感谢您的时间和精力。
答案 0 :(得分:0)
理论上,以下代码应该按照您的要求执行:
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';
但它没有,因为在页面卸载时保留事件监听器的可能性可能被滥用,浏览器会保护您免受此类滥用。
相反,您可以手动加载您选择的域,然后使用以下代码单击更简单的书签:
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,你会变得更好;有教程的好资源是MDN。