2016-09-09 95 views
0

我正在開發一個將html注入Linkedin的Chrome擴展。當我從我的Js文件中執行$(document.body).append($("<div>"));時,它還附加了頁面上的Iframe組件。如何在控制檯上鍵入$(document.body)時只返回主體。 如何將其限制在我的js文件中只有主體?document.body返回iframe body

我的清單文件:

{ 
    "manifest_version":2, 
    "name": "Hawk! Beta", 
    "description": "Hawk", 
    "version": "1.0", 
    "permissions": [ 
     "activeTab", 
     "tabs", 
     "storage", 
     "https://ajax.googleapis.com/", 
     "https://*.ngrok.io/" 
    ], 
    "icons": { 
     "16": "img/icon.png", 
     "48": "img/icon.png", 
     "128": "img/icon.png" 
    }, 
    "browser_action": { 
     "default_icon": {      
      "19": "img/icon.png",   
      "38": "img/icon.png"   
     } 
    }, 
    "background": { 
     "scripts": [ 
      "js/lib/jquery.min.js", 
      "js/lib/asteroid/ddp.js", 
      "js/lib/asteroid/q/q.js", 
      "js/lib/asteroid/asteroid/dist/asteroid.chrome.js", 
      "js/lib/asteroid/asteroid/dist/plugins/facebook-login.js", 
      "js/lib/asteroid/asteroid/dist/plugins/google-login.js", 
      "js/lib/asteroid/asteroid/dist/plugins/github-login.js", 
      "js/lib/bootstrap.min.js", 
      "js/background.js" 
     ] 
    }, 
    "content_scripts": [ 
     { 
      "matches": [ 
      "https://www.linkedin.com/*" 
      ], 
      "all_frames" : true, 
      "match_about_blank": true, 
      "js": [ 
      "js/lib/jquery.min.js", 
      "js/lib/handlebars.js", 
      "js/content_scripts/getPagesSource.js" 
      ], 
      "css":[ 
      "css/custom.css" 
      ] 
     } 
    ], 
    "web_accessible_resources": [ 
     "img/*", 
     "js/*", 
     "js/lib/*", 
     "css/custom.css", 
     "html/*" 
    ] 
} 

我用來注入HTML

function injectHtml(){ 
    console.log(document.body); //this returns 2 bodies 
    $(document.body).append($("<div>", { 
     "class": "myapp-container" 
    })); 
} 

我只希望注入主體,而不是到身體的iframe的代碼。

+0

以及你需要選擇iframe和大於內容。 – epascarello

+1

聽起來像你的腳本正在被注入iframe以及頂級頁面。你的清單設置是什麼?你限制了它可以注入的位置嗎? –

+1

請編輯您的問題以包含您的* manifest.json *文件和/或您正在使用的任何代碼,以將您的內容腳本注入頁面。這些信息需要回答你的問題。沒有這些信息,你還沒有提供調試問題所需的[mcve]。 [mcve]的一點是我們可以複製這個問題(即,我們有足夠的信息不必猜測問題/解決方案是什麼)。當你添加你的* manifest.json *和注入你的內容腳本時,請給我留言(在評論中包括'@ Makyen')。 – Makyen

回答

1

正如Patrick和wOxxOm所建議的那樣,我編輯了清單文件的content_scripts,如下所示。

"content_scripts": [ 
    { 
     "matches": [ 
     "https://www.linkedin.com/*" 
     ], 
     "all_frames" : false, //this had to be changed 
     "match_about_blank": true, 
     "js": [ 
     "js/lib/jquery.min.js", 
     "js/lib/handlebars.js", 
     "js/content_scripts/getPagesSource.js" 
     ], 
     "css":[ 
     "css/custom.css" 
     ] 
    } 
] 

它現在工作正常。多謝你們。

編輯: all_frames:

控制內容腳本是否匹配 頁面,或僅頂部框架的所有幀運行。

更多,我們有, this link to know more

+0

添加一些解釋,爲什麼這種改變導致它的工作將使這個更好的答案。除了解釋之外,我還建議鏈接到[「content_scripts」:「all_frames」](https://developer.chrome.com/extensions/content_scripts#all_frames)。 – Makyen

相關問題