2013-12-14 169 views
-1

我試圖點擊一個按鈕,並獲得頁面上的所有鏈接,但我不能,我在控制檯中出現此錯誤'拒絕執行內聯腳本,因爲它違反了以下內容安全策略指令: 「腳本的src '自我' 鉻擴展資源:」」獲取頁面上的所有鏈接

manifest.json的

{ 
    "manifest_version": 2, 
    "name" : "tat", 
    "description": "load", 
    "version": "1.0", 
    "permissions":["tabs", "http://*/*", "background", "activeTab"], 
    "content_scripts": [{ 
    "matches": ["http://*/*"], 
    "js": ["jquery.js","link.js"] 
}], 
    "browser_action": { 
    "default_title": "lol", 
    "default-icon":"images/128.png", 
    "default_popup":"popup.html" 
}, 
    "icons":{ 
    "32":"images/32.png", 
    "128":"images/128.png" 
}, 
    "background": { 
    "page": "background.html" 
} 
} 

POP-UP.HTML

<script type="text/javascript"> 
    var bkg = chrome.extension.getBackgroundPage(); 
    window.addEventListener('load', getAllLinks); 
</script> 

BACKGROUND.HTML

<script> 
var $html = jQuery(html); 
var getAllLinks = function(){ 
    var elementStr = ""; 
    var node = document.createElement("li"); 
    $html.find('a').each(function(){ 
    if(elementoLink.item(i).href.indexOf("operadorPerfil= REV") != -1){ 
    elemento.Str += elementoLink.item(i).href+"<br/>"; 
    node.innerText = elementStr; 
    } 
}); 
} 
chrome.tabs.onUpdated.addListener(function(){  // listen to updated tabs 
    getAllLinks(); 
    }); 
</script> 

回答

1

如果你讀了錯誤消息說的話:

拒絕,因爲它違反了以下內容安全策略指令執行聯腳本

「script-src'self'chrome-extension-resource:

你會意識到問題的關鍵在於你的代碼直接在HTML文件中。相反,你應該把你的文件在外部.js文件,並使用src屬性鏈接到他們:

<script src="popup.js"></script> 

而且在popup.js把你的代碼中有。重複背景頁面的過程。

CSP或內容安全策略旨在使開發人員更難實現爲XSS攻擊和各種其他惡意活動提供攻擊媒介的代碼。它通過完全阻止特定的「危險」事物的使用,以及僅使用少量推薦的做事方法來做到這一點。例如,除非您特別放寬了CSP設置中的限制,否則將阻止eval。有關哪些CSP塊以及它如何影響代碼的更多信息,請參閱the Chrome Extensions documentation