2012-09-25 95 views
2

我正在用兩種不同的內容腳本構建Safari擴展。一個腳本需要注入所有http頁面(但不是https頁面)。另一個只注入到google.com網頁,而不考慮方案。內容腳本注入的多個白名單/黑名單?

爲了實現這一點,我已經設置Extension Website Access到:

Extension Website Access

這應該意味着在一個較高的水平,在我的擴展內容腳本應該能夠訪問的所有頁面。

爲了獲得更精細的控制,我隨後將內容腳本注入到符合我的模式的URL中。

App = { 
    content: { 
    // Inject into unsecure pages. 
    whitelist: ['http://*/*'], 
    // But not into secure pages. 
    blackList: ['https://*/*'], 
    loc: safari.extension.baseURI + 'data/content.js' 
    }, 
    results: { 
    // Inject this script into all google.com pages 
    whiteList: ['http://*.google.com/*', 'https://*.google.com/*'], 
    // Surely I don't need a blacklist if I specify a whitelist? 
    blacklist: undefined, 
    loc: safari.extension.baseURI + 'data/results.js', 
    } 
}; 

// Inject the first content script. 
safari.extension.addContentScriptFromURL(App.content.loc, 
    App.content.whitelist, App.content.blacklist, false); 

// Inject the second content script. 
safari.extension.addContentStyleSheetFromURL(App.results.cssLoc, 
    App.results.whitelist, App.results.blacklist, false); 

問題是兩個腳本都被注入到所有頁面中。就好像我的白人和黑名單無所作爲。我究竟做錯了什麼?

+0

我不知道這是否是問題的根源,但是您不應該在第一次注入命令中同時需要白名單和黑名單,因爲這兩套完全平鋪空間。 – canisbos

回答

2

我在上面用大寫字母在我whilelist /黑名單的定義:

App = { 
    content: { 
    blackList: ['https://*/*'], 
    }, 
    results: { 
    whiteList: ['http://*.google.com/*', 'https://*.google.com/*'] 
    } 
}; 

但是如果使用變量的非資本化的版本時,我通過列表到腳本注入功能。

safari.extension.addContentScriptFromURL(App.content.loc, App.content.whitelist, App.content.blacklist, false); 

這顯然意味着,undefined正在傳遞到注入功能,而不是實際的白名單/黑名單。

+0

請使用您問題上的編輯鏈接添加其他信息。後回答按鈕應該只用於問題的完整答案。 –

+0

我改進了我的答案,並投票結束了原來的問題。我希望這些變化令人滿意。 –