GoogleリーダーでChrome拡張機能を作成したいが問題が見つかりました。コンテンツスクリプトはiframeにアクセスできません。すべてのnについて、window.frames [n] =未定義。そして、私はこれを持っています "all_frames":manifest.jsonの真実。または、誰かが各記事の下にボタンを追加する方法を教えてくれるかもしれません。ありがとうございました!chrome extension content scriptがiframeにアクセスできない
答えて
GoogleリーダーのレンダリングされたHTMLを簡単に見てみると、IFRAME内の唯一のボタンはGoogle Plus +1ボタンのように見えます。他のボタンはすべてIFRAMEにありません。 IFRAMEについて心配する必要はありません。
私は、既存のボタンが+1、共有、電子メール、未読のままにする、タグを追加するの各記事の下に表示されるボタンであると仮定しています。
既存の記事ボタンに新しいボタンを追加するには、DOMを列挙するだけです。具体的には、「エントリアクション」DIVクラスを追加し、要素/ボタンとともに新しいSPANを追加します。
私はReaderが新しい記事でDOMを動的に更新するかもしれないと思っていますが、わかりません。このような場合は、新しい記事をDOMに追加する必要があるため、ボタンをもう一度追加する必要があります。これを行うには、DOMNodeInsertedのイベントリスナーを追加します。
document.addEventListener('DOMNodeInserted', onNodeInserted, false);
UPDATE:それは動的に追加されるので、あなたが「.ENTRY・アクション」クラスを参照してくださいすることはできません
理由があります。
これは非常に基本的な動作例です。これはDOMを監視し、 ".myclass" SPANボタンを持たないentry-actions DIVが見えるときにそれを追加します。
拡張機能にjqueryを組み込む必要があります。この例では、jquery-1.7.1.min.jsを使用しました。例を切り取って貼り付ける場合は、foo.pngというアイコンファイルも必要です。
manifest.jsonを
{
// Required
"name": "Foo Extension",
"version": "0.0.1",
// Recommended
"description": "A plain text description",
"icons": { "48": "foo.png" },
//"default_locale": "en",
// Pick one (or none)
"browser_action": {
"default_icon": "Foo.png", // optional
"default_title": "Foo Extension" // optional; shown in tooltip
},
"permissions": [ "http://*/", "https://*/", "tabs" ],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["jquery-1.7.1.min.js", "content_script.js" ],
"run_at": "document_idle"
}
]
}
content_script.js
var timer;
document.addEventListener('DOMNodeInserted', onNodeInserted, false);
function onNodeInserted(e)
{
if(timer) clearTimeout(timer);
timer = setTimeout("addButtons()", 250);
}
function addButtons()
{
console.log('add buttons');
var $actions = $(".entry-actions").filter(function() {
return $(this).find('.myclass').length === 0;
});
$actions.append('<span class="myclass"><a href="javascript:alert(\'hey! Im a foo extension injected button!\');return false;">My button</a></span>');
}
突然変異イベントは、あなたが見てしなければならない代わりに、断頭突然変異の観察者は今、それらを手伝ってくれる図書館を募集しています(自分でそれを試したことはありません).... http://code.google.com/p/mutation-summary/ – PAEz
これは知っているバグです..... http ://code.google.com/p/chromium/issues/detail?id = 20773 ...あなたに役立つコメントにいくつかの回避策があります。 – PAEz
私は「entry-actions」DIVをjavascriptで選択することさえできませんし、その理由もわかりません。 – user1070827
- 1. iframe chrome extensionの読み込みが遅い
- 2. chrome-extensionポップアップのiframe内のcontent.js
- 3. youtube video in chrome extensionコンテンツスクリプト
- 4. chrome extensionからsiteのlocalStorageにアクセスできますか?
- 5. chrome.storage for Chrome extension
- 6. Google Chrome - PDF iFrameでダウンロードできない
- 7. angularjs chrome extensionのテンプレート
- 8. コンテンツセキュリティポリシーのディレクティブ: "script-src 'self' blob:filesystem:chrome-extension-resource:"
- 9. chrome extension extension elementの色
- 10. CORS Chrome Developer Extensionの問題
- 11. Selenium Chrome Extension Interaction
- 12. 異なるドメインのiframeコンテンツにchrome拡張子でアクセスする
- 13. chrome extension storage:set/get value
- 14. Nightwatchがiframeの要素にアクセスできない
- 15. ローカルページを指しているIframeが空でアクセスできない
- 16. google chrome extension userscriptアイコン
- 17. chrome extension - chrome.tabs.executeScriptページリダイレクトの後
- 18. chrome extension page modification onload
- 19. AngularJSエラーCross originリクエストは、http、data、chrome、chrome-extension-resource、https、chrome-extension-resourceの場合にのみサポートされます。
- 20. Mac Google Chrome iframeアクセス先の親ウィンドウ
- 21. Chrome拡張機能のIframeからの安全でないJavascriptアクセス
- 22. Google App ScriptのサイドバーにChromeのコンテンツが表示されない
- 23. Oracle Webcenter Content Fast CheckinがSiebel iFrameと連携しない
- 24. iframeの上部にあるworkaroundがChromeで動作しない
- 25. iframeで動画URLを埋め込むときにChromeエラーが発生する
- 26. CRM 2011 IFRAMEのレポートがjavacriptからアクセスできない
- 27. chrome extension addListenerとsendMessage synchronous usage
- 28. Customer.ioのiframeにある要素にアクセスできない
- 29. Chrome拡張機能で動的iFrameにアクセスする
- 30. iframe内にGoogle +1ボタンがChromeに表示されない
も参照してくださいhttp://stackoverflow.com/q/35571106/32453 – rogerdpack