0

私はクロム拡張機能の開発に取り組んでおり、この分野では比較的新しいです。私が現在取り組んでいるプロジェクトでは、拡張機能が現在の「Web サイト」(ブラウザのアクティブなタブで現在開いている Web サイト) に存在するすべての「Web ページ」をスキャンする必要があります。Web サイトからのすべてのアウトバウンドリンクのリストを取得して印刷する必要があります (現在開いている Web ページだけではありません)。

これまでの進捗状況:クロム タブ APIを使用して、現在アクティブな Web ページからすべてのアウトバウンドリンクのリストを取得することができました。URL を取得し、クエリ関数と document.links を利用する小さなスクリプトを使用して、1 つのページに対してこれを正常に行うことができました。

問題: これを反復ソリューションに変換し、現在のページからすべてのリンクをスキャンし、これらのリンクを 1 つずつヒットし、各リンクに対してプロセスを繰り返し、最後に新しく見つかったリンクを追加できるようにする必要があります。それらを既存のリストのセットに追加します。

これは些細な問題ではないことを理解しており、基本的に使用すべきアプローチについて何らかのガイダンスが必要です。リンクを新しいタブで開かずに、慎重にリンクをたたくことができませんでした。これを行う方法が必要です。誰かが私を案内してくれれば、それは素晴らしいことです。ありがとう!!

4

3 に答える 3

0

コメントで述べたように、 XHR(XMLHTTPRequest()) はうまくいきました!! これが私が現在使用しているコードです(うまくいけば、同様の問題を抱えている他の人を助けることができます)

var xmlHttp = null;
var allLinks = []; //set of all internal and external links
function httpGet(theUrl)
{
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, true );
    xmlHttp.send( null );
    xmlHttp.onreadystatechange = ProcessRequest;
}

function ProcessRequest()
{
    if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 )
    {           
            var container = document.createElement("p");
            container.innerHTML = xmlHttp.responseText;
            var anchors = container.getElementsByTagName("a");
            var list = [];
             for (var i = 0; i < anchors.length; i++) 
             {
                var href = anchors[i].href;
                var exists = 0;
                for(var j = 0; j < allLinks.length; j++)    // remove duplicates
                    if(allLinks[j] == href)
                        exists = 1;
                if (exists == 0)
                {
                    allLinks.push(href);
                    document.getElementById('printLinks').innerHTML += href + "<br />";
                }
             }
        }
}

これはうまく機能し、リストから各 URL をヒットして分析し、新しく見つかった URL を追加し続けることができます。

礼儀: StackOverflow の質問と他のブログ :)

于 2013-10-01T20:33:50.773 に答える
0

以下のスクリプトにフィルターを適用するだけで、準備完了です。時間ができたらすぐに、この回答を更新する可能性があります。

// インバウンドリンクとアウトバウンドリンクの数を抽出中

Links = document.querySelectorAll('a'); 
for (link in Links) 
console.log(Links[link].href);
于 2020-09-05T06:32:22.337 に答える