2017-07-29 12 views
0

私は新しいタブの代わりに同じタブで開くように、ウェブページ上のリンクを変更する拡張機能を書こうとしています。私の拡張機能は、manifesto.jsonmain.jsという2つのファイルで構成されています。なぜ私のクローム拡張機能(JavaScriptを使用)はリンクのターゲット属性を変更しませんか?

マニフェストは次のようになります。

{ 
    "manifest_version": 2, 

    "name": "Quora Link Fixer", 
    "description": "This extension modifies Quora links so that they open in the current tab.", 
    "version": "1.0", 
    "content_scripts": [ 
    { 
     "matches": ["https://www.quora.com/*"], 
     "js": ["main.js"] 
    } 
    ], 
    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/" 
    ] 
} 

とJavaScriptファイルは次のようになります。

console.log("Extension Loaded"); 

var anchors = document.getElementsByTagName("a"); 

for (var i = 0; i < anchors.length; i++) { 
    anchors[i].setAttribute('target', '_self'); 
    console.log("Replaced target for link: " + anchors[i].href); 
} 

コンソールは、それが言われているすべてのログを記録しかしターゲットは実際には決して変わらないとまだリンク新しいタブで開きます。

+2

は、デベロッパーツールのリンクを点検し、あなたは彼らがonclickの属性を持って表示されます。消して。 – wOxxOm

+1

*マニフェスト* * manifest.json *を意味しますか? – Makyen

+1

他の何かがターゲットを元に戻さないと確信していますか?新しいタブで常に開くようにするオプションや拡張機能を設定していないということですか? – Makyen

答えて

0

コードの実行を遅らせるタイマーを追加することで問題を解決できました。私は、ウェブサイトに掘り下げられたコードが、ページがロードされた後、そしてコードが実行された後にリンクターゲットを_blankとして設定すると結論づけました。

私は関数にjavascriptコードを入れ、setTimeout(function、milliseconds)を使って関数を遅らせました。

結果:

console.log("Quora Link Fixer Extension Loaded"); 

function fu(){ 
    var anchors = document.getElementsByTagName("a"); 
    for (var i = 0; i < anchors.length; i++) { 
     anchors[i].setAttribute('target', ''); 
    } 
} 

setTimeout(fu, 2200); 
関連する問題