2011-09-14 9 views
0

この問題を解決するには問題があります。Chrome拡張機能を使用してコンテンツスクリプトを使用してinnerTextを変更する

コンテンツスクリプトを使用してクロム拡張を使用してページ上のh2のテキストを変更したい拡張機能を設定していて、コンテンツスクリプト用に読み込まれているscript.jsファイルがあります。

script.js 

document.getElementById('texttochange').innerText = "CHANGED !"; 

しかし、私は常にエラーを取得:

Uncaught TypeError: Cannot set property 'innerText' of null 

は、Chrome拡張機能のために行われる必要がある余分な何かがuser.jsのuserscriptとしてロードしてインストールChromeをインストールさせる場合、これは正常に動作し、そこにありますそれは、私がそれが最小の問題だと思うのですが、私は何が欠けているのか分かりません。

manifest.json 
{ 
    "name": "Test", 
    "version": "0.1", 
    "description": "Test", 
    "icons": { "16": "icon16.png", 
      "48": "icon48.png", 
      "128": "icon128.png" }, 
    "content_scripts": [ 
    { 
     "matches": ["http://site.com"], 
     "all_frames": true 
    } 
    ] 
} 

私のブラウザのキャッシュをクリアしてしまったように私はコメントを追加することができませんでした。

構造は次のとおりです。ここで

<frameset> 
    <frame> 
    ... 
     <h2 id="texttochange">This should change</h2> 
    ... 
    </frame> 
</frameset> 

が拡張TEリンクである、それは非常に単純であり、この場合にはあるサイトomegle.comにH2を変更しようとしていますフレームセットを使用して、上からフレームのもの。

http://www.megaupload.com/?d=UO7L9W2X

感謝。

+0

"マッチ" のための "http://site.com" の例の値はありますか? – WiseGuyEh

+0

"texttochange"はh2要素のIDですか? – Paul

+0

これはどちらのサイトにも当てはまる非常に一般的な質問なので、私は両方とも本当のサイトを置く必要はありませんでした。 – InNeedOfAssistance

答えて

0

が、これが私のマニフェストですthis-

document.body.innerHTML = document.body.innerHTML.replace(new RegExp("texttochange", "g"),"CHANGED !"); 
document.head.innerHTML = document.head.innerHTML.replace(new RegExp("texttochange", "g"),"CHANGED !"); 

{ 
"name": "My First Extension", 
"version": "1.0", 
"description": "The first extension that I made.", 
"background_page": "background.html", 
"browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
}, 
"permissions": [ 
    "tabs", "http://*/" ] 
} 

を試してみてください。私が投稿したコードは、background.htmlにあり、chrome.tabs.onUpdatedで実行されました。スクリプト部分が何らかの理由で動作しない場合があります。

+0

何もしません。私がsetIntervalを使用すると(これは最終的に他のものを実行するために使用されます)、ページはリロードを継続します。 – InNeedOfAssistance

+0

それは私の拡張から直接コピーされたはずです。 – ghostbust555

0

DOM負荷の前にスクリプトが挿入されているため、このエラーが発生していますか。したがって、変更しようとしているh2要素はまだ存在しません。 content_scriptセクションに "run_at": "document_end"を追加するだけで動作します。

manifest.jsonを

{ 
    "name": "Test", 
    "version": "0.1", 
    "description": "Test", 
    "icons": { "16": "icon16.png", 
      "48": "icon48.png", 
      "128": "icon128.png" }, 
    "content_scripts": [ 
    { 
     "matches": ["http://site.com"], 
     "run_at": "document_end", 
     "js": ["script.js"] 
    } 
    ] 
} 

script.js

document.getElementById('h2Id').innerText = "CHANGED !"; 
+0

私はそれを試みましたが、document_idleを使用しました。以前と同じように働いていません。 – InNeedOfAssistance

+0

あなたは間違ったIDを使用しているか、iframe内にあります。見てみましょう。 – cvsguimaraes

関連する問題