2014-02-19 73 views
-1

我正在尝试将功能添加到我制作的Chrome扩展程序中。我想要做的是一旦导航到特定的页面,我希望能够在工具栏上按下一个按钮并让它“点击”该页面上的所有链接,包含harvest.game?user = 123456与123456是所有链接的不同数字。它可以使用jQuery或JavaScript。唯一的问题是脚本需要作为元素插入到页面的头部,因为不允许跨域脚本,因此没有外部引用到js文件。我可以处理元素的添加,但是,我没有计算出实际的功能。点击包含字符串的页面上的所有链接?

含有链接的所有元素看起来像这样:

<div class="friendWrap linkPanel"> 
<h5>Christine...</h5> 
<div class="friend-icon"> 
<img src="https://graph.facebook.com/100001726475148/picture"></div> 
<div class="levelBlock friend-info"> 
<p>level</p> 
<h3 class="level">8</h3></div> 
<a href="harvest.game?user=701240" class="btn">Harvest</a> 
<a class="boxLink" href="profile.game?user_id=701240"><span></span></a></div> 

像这样的东西(我知道这是一个烂摊子,不工作)?或者可能更好使用jQuery?

var rlr=1; 
function harvestall(){var frt,rm,r,rld,tag,rl; 
var frt=1000; 
r=document.getElementsByClassName("friendWrap linkPanel"); 
rl=r.length; 
rld=rl-rlr; 
if(rld>=0){tag=r[rld].getElementsByTagName('a'); 
if (rl>=1 {rlr++;harvestall();} 
else if (rl>=1) {tag[1].onclick();do something??? ;} 
} 

回答

1

像这样的东西应该工作

$("a[href*='harvest.game?user=']").trigger("click"); 
+0

所以将其添加到页面的头部导致harvestLinks没有:-( 定义'FJ1 =使用document.createElement(“脚本“); FJ1.type =”text/javascript“; FJ1.appendChild(document.createTextNode(”$(function harvestLinks($){$(\“a [href * ='harvest.game?user='] ()“)。trigger(”click“);});”)); document.getElementsByTagName(“head”)[0] .appendChild(FJ1);' –

+0

@ShcFinalJudgement摆脱$();围绕函数和参数$,那么它应该工作。 –

+0

有关性能注意事项,请参阅以下内容:http://jsperf.com/jquery-complex-selector-vs-filter –

0
// Using jQuery, wait for DOMReady ... 
$(function harvestLinks() { 

    // Only create regexp once ... 
    var reURL = /harvest.game\?user=/, 

     // Create a ref variable for harvest links ... 
     // Use 'links' later without querying the DOM again. 
     links = $("a").filter(
     function() { 
      // Only click on links matching the harvest URL ... 
      return this.href && reURL.test(this.href); 
     } 
    ).click(); 

}); 
+0

那么我应该能够使用它将它追加到头部? –

+1

FJ1 = document.createElement(“script”); FJ1.type =“text/javascript”; (函数harvestLinks($){var reURL =/harvest.game \?user = /,links = $('a [href]')。filter(function(){return()返回FJ1.appendChild(document.createTextNode reURL.test(this.href);})点击();});“)); document.getElementsByTagName(“head”)[0] .appendChild(FJ1); –

+0

为了获得最大效率,我删除了属性选择器并创建了复合返回语句。 Ryan的回答也非常好,但我现在要运行一些jsperf.com测试来确认我怀疑带过滤器函数的标记查找可能比使用jQuery中的复杂选择器查找更快。 –

相关问题