1

如果我在http://facebook.com上,并且我使用 Firebug 或其他控制台直接在网站上运行一些 JavaScript……是否可以强制链接触发其相应POSThttps://www。 facebook.com/ajax/ufi/like.php?我尝试了以下快速而肮脏的方法:

var s = document.createElement("script");
s.src = "http://code.jquery.com/jquery-latest.min.js";
s.type = "text/javascript";

document.getElementsByTagName("head")[0].appendChild(s);

$(".UFILikeLink").click();

...但是,当然,它不起作用。我想知道我可以用纯 JS 或其他方式强制该事件采取什么方法。谢谢!

4

2 回答 2

0
var s = document.createElement("script");
s.src = "http://code.jquery.com/jquery-latest.min.js";
s.type = "text/javascript";
document.getElementsByTagName("body")[0].appendChild(s)
console.log($)
s.onreadystatechange = function() {console.log($)};
s.onload = function() { console.log($)};

请注意,console.log($) 抛出一个未定义的,我认为在您添加调用 $().click() 时没有加载 jQuery。

所以你等待脚本加载并准备好。s.onreadystatechange = function() {console.log($)}; s.onload = function() { console.log($)};

于 2013-07-18T05:43:45.357 回答
0

您的代码不起作用,因为 $(".UFILikeLink") 返回一个列表(假设已加载 jQuery)。您可能需要点击每个单独的元素(如按钮)

工作解决方案:

$(".UFILikeLink[title^='Like this']").each( function (index) { this.click(); });

最好在单击之前添加一些延迟(例如 5 秒)并更改其颜色以便我们识别它;)也将其保持在视图中。

$(".UFILikeLink[title^='Like this']").each( function (i) { 
    setTimeout(function(e) { 
        e.style.color = '#FF0000'; 
        e.click(); 
        e.scrollIntoViewIfNeeded(); 
    }.bind(null, this), i*5000); 
});

享受!

于 2013-12-26T15:55:46.633 回答