2014-06-10 38 views
3

我試圖運行JavaScript編寫的網頁上的iMacros的宏,就像這樣:「沒有定義文件」的Javascript的iMacros

for (var i = 1; i < 18; i++) { 
    document.querySelector(".foo table > tbody > tr:nth-child(" + i + ") > .goo:nth-child(2) > a").click(); 
    document.querySelector(".foo > a").click(); 

if (i % 17===0) { 
    alert('Reset i'); 
    i = 1; 
    } 
} 

一切似乎從JS控制檯做工精細,但當我運行宏,我得到:

"ReferenceError: document is not defined, line 2 (Error code: -991)" 

我已經加載的JQuery到iMacros的有this,並把我之間的代碼:

$(document).ready(function() { 
    // 
}); 

但我不斷收到此錯誤,如果我使用JQuery:

TypeError: $ is not a function, line 28 (Error code: -991) 

如果我只用JS,我會得到相同的「文件沒有定義」的錯誤如前。

所以我的問題是,我需要定義文件,我該怎麼做?

+0

嘗試'jQuery'而不是'$' –

+0

試試吧,讓我們知道。我對你在「this」下放置的功能進行了一些嘗試,但它並沒有真正起作用。 – macroscripts

+0

@MohitArora仍然收到相同的錯誤,要麼JQuery不是一個函數(如果替換爲$ JQuery),或者文檔沒有定義。你可以再詳細一點嗎? – Andratwiro

回答

6

我從來沒有能夠將jQuery加載到一個imacros腳本中,但最終並沒有什麼大不了的。 要訪問DOM,您需要將每個元素引用爲: window.content.document.getElementsByClassName('foo')例如。 這會給你一個數組,所以一定要挑選每一個元素,你需要在數組中:

var foo_class = window.content.document.getElementsByClassName('foo'); 

for (i=0;i<foo_class.length;i++){ 
//do something 
} 

希望它可以幫助

編輯補充工作示例:

var links = window.content.document.getElementsByClassName('question-hyperlink'); 
var list=[] 
for (i=0;i<links.length;i++){ 
txt=links[i].innerHTML; 
list.push(txt); 
} 
number=links.length; 
linkstexts=list.toString(); 
showme="number of links with class=question-hyperlink: "+number+"  text links with class=question-hyperlink: "+linkstexts; 

iimDisplay((showme)) 

複製在一個macro.js中的代碼,並運行在firefox上stackexchage。它會計算所有與class =「question-hyperlink」的鏈接並顯示它們各自的文本 - 您可以在播放(循環)按鈕下的綠色文本框中看到它。

+0

你用什麼來運行這段代碼? FireBug控制檯? – macroscripts

+0

不,一個.js腳本直接在imacros for firefox中運行。我現在不在PC上,而且我住的地方比較晚,但是明天我會發佈一個工作腳本來統計鏈接或其他信息。 – flish

+0

謝謝你!我真的被困在這 – Andratwiro