2013-02-08 39 views
1

我正在嘗試爲Greasemonkey創建一個腳本,以在打開一個Pinterest窗口時自動固定腳本。試圖用Greasemonkey自動固定

CODE:

body = document.body; 

if (body != null) { 
    var prepare = document.getElementsByTagName("button"); 
    var buttons = ""; 

    for (var i = 0; i < prepare.length; i++){ 
     if (prepare[i].getAttribute("data-text-pin-it")!=null) { 
      buttons = prepare[i]; 
      break; 
     } 
    } 
    buttons.click(); 
} 

它被執行,如果我設置的代碼的最後一個的console.log打印,但按鈕沒有點擊!

如果我通過Firebug控制檯執行相同的指令,我會得到想要的效果。

回答

0

毫無疑問,Pinterest按鈕是由AJAX添加的 - 在您的腳本運行很久之後。

使用AJAX技術的補償等待它。下面是一個完整的腳本使用jQuery和the waitForKeyElements() utility的真棒權力點擊該按鈕:

// ==UserScript== 
// @name  YOUR_SCRIPT_NAME 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 

waitForKeyElements ("button[data-text-pin-it]", clickPinterestBtn); 

function clickPinterestBtn (jNode) { 
    jNode[0].click(); 
} 
+0

同樣的問題...我設置的console.log(jNode)的內部函數,它顯示按鈕,但沒有按」點擊它! 編輯:它在Chrome中,而不是在Firefox中工作! – joseantgv 2013-02-08 19:01:50

+0

你在使用Tampermonkey嗎?如果不是,那麼這是不可能的。如果它不能在Firefox + GM工作,但確實在Chrome + Tampermonkey,那麼'@ require'd文件可能沒有被複制下來(在通用汽車的一個已知錯誤)。按照[這對方的回答]的方法(http://stackoverflow.com/a/3508463/331508)重新安裝腳本。 – 2013-02-08 22:02:08