2013-11-15 4 views
0

Итак, у меня есть сценарий, который будет захватывать ссылки со стола на THIS странице («х» есть ссылки на зарегистрированных пользователей странице) ...Обработчик нажатия кнопки Greasemonkey не работает?

Так что я пытаюсь использовать всплывающее окно что Брок помог мне с другим сценарием ... ссылки добавляются правильно в массив 'linksToOpen' (или до того, как я добавил кнопку, слушатель и функцию openLinksInSequence) ... все кажется прекрасным, и я не получайте сообщений об ошибках ... но моя кнопка НЕ ​​работает!

// ==UserScript== 
// @name  Unicreatures Accoplishment Checker 
// @namespace http://trueidiocy.us 
// @description Marks off completed accomplishments 
// @include  http://unicreatures.com/accomplishments.php 
// @include  http://www.unicreatures.com/accomplishments.php 
// @include  http://unicreatures.com/accomplishments.php? 
// @include  http://www.unicreatures.com/accomplishments.php? 
// @version  1 
// @grant  GM_addStyle 
// ==/UserScript== 

var mytable = document.getElementById('right').getElementsByTagName('table')[4]; 
var links=mytable.getElementsByTagName('a'); 
var i; 
var linksToOpen  = []; 
var mywin2   = null; 


var zNode  = document.createElement ('div'); 
zNode.innerHTML = '<button id="checkButton" type="button">' 
      + 'Check Accomplishments</button>' 
      ; 

zNode.setAttribute ('id', 'checkButton'); 

mytable.parentNode.insertBefore(zNode, mytable); 



function checkAccomplishments (zEvent) { 



for(i=0;i < links.length;i++) { 
    if (links[i].href.indexOf('family') > -1) { 


    linksToOpen.push (links[i].href); 

    links[i].innerHTML="*"; 

} 
} 
alert(linksToOpen) 

openLinksInSequence(); 
}; 

function openLinksInSequence() { 
    if (mywin2) { 
     mywin2.close(); 
     mywin2  = null; 
    } 

    if (linksToOpen.length) { 
     var link = linksToOpen.shift(); 
     mywin2  = window.open (link, "my_win2"); 

     mywin2.addEventListener ('load', openLinksInSequence, false); 
    } 
} 


checkButton.addEventListener ("click", checkAccomplishments, true); 

Итак, почему моя кнопка не работает?

+0

У вас есть несколько проблем, но, самое главное, вы устанавливаете 'id' вашего div таким же, как ваша кнопка. И вы пытаетесь добавить прослушиватель событий к неопределенному объекту. Элементы DOM не отображаются как переменные JS. Вам нужно будет «var checkButton = document.getElementById (« checkButton »);' перед установкой прослушивателя событий. – mafafu

+0

но ... но ... но ... Я сделал это НАСТОЛЬКО, как мой рабочий скрипт ... lol ... Я посмотрю на эти проблемы ... спасибо –

+0

@mafafu Это сделало это ... спасибо ... если вы добавите это в качестве ответа, я приму это –

ответ

2

Вы устанавливаете идентификатор своего div таким же, как и ваша кнопка, которая недействительна. И вы пытаетесь добавить прослушиватель событий к неопределенному объекту. Элементы DOM не отображаются автоматически как переменные JS. Перед установкой прослушивателя событий вам нужно будет var checkButton = document.getElementById("checkButton");.

+0

Снова ... спасибо ... Я знал, что это должно быть что-то простое, чего я просто не видел! –

Смежные вопросы