2014-03-05 23 views
0

我製作了一個很棒的Chrome擴展程序,用於編輯我不喜歡的文字...除了我無法在iframe中使用它...我已經在我的清單中使用了:使用Chrome擴展程序更改內嵌框架中的文本

"matches": ["<all_urls>"], 
    "all_frames": true, 
    "run_at" : "document_idle", 
    "js": ["jquery-1.11.0.min.js", "myscript.js"], 

我的代碼很簡單:

$('body :not(:has(*))').text(function(i, v) { 
    return v.replace(/OFFENDING-WORD/ig, '▓▓▓▓▓▓');  
}); 

回答

-3

由於Same Origin Policy,你不能訪問不在同一個域中的iframe的內容。它們完全不透明(即JavaScript甚至無法看到內容)到頁面上運行的所有腳本或擴展。沒有什麼可以做的。除非iframe的源是完全相同的域(這很少見),或者源頁面具有Access-Control-Allow-Origin頭部集(也很少見),那麼在任何瀏覽器中運行的代碼都將無法訪問該iframe的任何內容。雖然它有時很煩人,但它是一項非常重要的安全功能,可防止各種惡意行爲。

編輯:對不起,我原本是在編寫CORS時,我的意思是同源策略。 CORS是圍繞執行代碼繞過SOP的方法,但它需要設置Access-Control-Allow-Origin。

+0

我完全理解跨源資源共享,這很重要。但是,我正在尋找在瀏覽器級別更改文本......是否有可以實現相同結果的Chrome瀏覽器API?我只使用JavaScript,因爲它很簡單。 – dprogramz

+0

這就是我要說的。除非iframe的源是完全相同的域(這很少見),或者源頁面具有Access-Control-Allow-Origin頭部集(也很少見),那麼在任何瀏覽器中運行的代碼都無法訪問該iframe的任何內容。除非你編寫自己的瀏覽器,它忽略了CORS,否則你運氣不好。 – Mordred

+0

-1因爲答案**錯誤**表示在Chrome擴展中無法替換內部框架中的文本。 Chrome擴展程序可以在不同的框架中運行代碼。 –

相關問題