2014-02-19 69 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中的複雜選擇器查找更快。 –

相關問題