Hirdetés

Új hozzászólás Aktív témák

  • trisztan94

    őstag

    Sziasztok!

    Chrome kiegészítővel gyűlt meg a bajom. (tudom, hogy ez nem feltétlenül jQuery, de több helyen is használom benne, így ide írom)

    Van egy "eventPage.js" background page-em és egy "feldolgoz.js" content scriptem. A feldolgozó script kiszed pár adatot az aktuális oldalból, majd egy tömbként átküldi a background page-nek, így:

    var i = 0;
    $('.szovegbox_kn tbody').each(function () {
    var $cegszam = $(this).first("tr").find("td:nth-child(5)").html();
    var $url = $(this).first("tr").find("td:nth-child(4) a").attr("href");
    var cegszamok = new Array();
    if ($cegszam !== undefined) {
    cegszamok[i] = $cegszam.replace(/\s/g, '');
    chrome.runtime.sendMessage({
    cegszam: cegszamok[i]
    });

    //location.replace("http://www.opten.hu/loadpage.php?dest=CTTVCK&lang=&cid=" + cegszamok[i]);
    i++;
    }
    });

    ugye itt a lényeg maga a message küldés:

    chrome.runtime.sendMessage({
    cegszam: cegszamok[i]
    });

    Ezt a bejött message-et feldolgozza a background page, így:

    var cegszam = request.cegszam;
    if (cegszam !== undefined) {
    var newURL = "valami.hu/index.php?q=" + cegszam;
    chrome.tabs.create({
    url: newURL
    });

    chrome.tabs.onUpdated.addListener(function (tabId, changeInfo) {
    if (changeInfo.status === 'complete') {
    window.setTimeout(function () {
    chrome.tabs.remove(tabId);
    }, 3000);
    }
    });
    }

    Ugye itt az történik, hogy készít egy új lapot a kiegészítő a böngészőben, betölti az adott linket, ha betöltött a megnyitott lap akkor vár 3mp-et és bezárja. Azt, hogy mi értelme van ennek hagyjuk, "vállalati titok" (titoktartásit írtam alá)

    Amit meg szeretnék oldani:[/B

    Jelenleg úgy működik, hogyha a feldolgozó script-em 100 olyan adatot talált, akkor mind a 100 lapot EGYSZERRE nyitja meg a böngésző. Ez nyilvánvalóan nem jó, mert behal a chrome.

    Szeretném azt, hogy várjon mindig 6 másodpercet a feldolgozó scriptem mielőtt elküldené az adatokat a background page-nek. Most biztos, hogy mindenki arra gondol, hogy én hülye miért nem setTimeout-tal csinálom. Kérem szépen több féle képpen is próbáltam:

    A feldolgoz.js fájlban: Az egész .each() elé, az .each()-en belül, az if() elé, az if() belsejébe, a chrome.runtime.sendmessage köré.

    A background page-be: a request köré, az if köré, az if belsejébe, a tabs.create köré.

    Sehogy sem működik, igaz, megvárja a setTimeout-ot, de akkor is egyszerre nyitja meg a lapokat. Olyan, mintha letárolná az összes megnyitandó oldalt és amikor végzett a feldolgoz fájlom, akkor az egész tömböt megnyitná, vagy nem tudom.

    tl;dr:
    Egyesével szeretném megnyitni, 10mp késéssel a lapokat, majd miután bezárta azt a böngésző, megnyitni a következőt.

Új hozzászólás Aktív témák