2014-03-05 8 views
0

나는 내가 좋아하지 않는 단어를 수정하는 훌륭한 크롬 확장 프로그램을 만들었습니다 ... iframe에서 작동하지 않는 것을 제외하면 ... 이미 내 매니페스트에 있습니다.크롬 확장 프로그램을 사용하여 iframe의 텍스트 변경

"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을의 내용에 액세스 할 수 없습니다. 페이지에서 실행되는 모든 스크립트 또는 확장 프로그램에 대해 완전히 불투명합니다 (즉 자바 스크립트는 내용을 볼 수 없습니다). 당신이 할 수있는 일은 아무것도 없습니다. iframe의 소스가 똑같은 도메인 (드물다)이거나 소스 페이지에 Access Control-Allow-Origin 헤더 세트 (드문 경우)가 없으면 모든 브라우저에서 실행중인 코드는 액세스 할 수 없습니다 해당 iframe의 모든 콘텐츠. 때때로 성가 시지만 모든 종류의 악의적 인 활동을 방지하는 매우 중요한 보안 기능입니다.

편집 : 죄송합니다. 원래 원래 동일 정책을 의미 할 때 CORS를 작성했습니다. CORS는 실행 코드 주위에서 SOP를 처리하는 방법이지만 Access-Control-Allow-Origin을 설정해야합니다.

+0

전 크로스 소스 공유를 중요하게 생각합니다. 그러나 브라우저 수준에서 텍스트를 변경하려고합니다 ... 동일한 결과를 얻을 수있는 Chrome 브라우저 API가 있습니까? 나는 단순함 때문에 자바 스크립트 만 사용하고있다. – dprogramz

+0

그게 내가 말하는거야. iframe의 소스가 똑같은 도메인 (희귀)이거나 소스 페이지에 액세스 제어 허용 원 헤더 세트 (드문 경우)가 없으면 모든 브라우저에서 실행중인 코드는 액세스 할 수 없게됩니다 해당 iframe의 모든 콘텐츠. CORS를 무시하는 브라우저를 직접 작성하지 않으면 운이 없어집니다. – Mordred

+0

-1 대답 **이 잘못 ** 된 이유는 Chrome 확장 프로그램에서 iframe 내부의 텍스트를 바꿀 수 없다는 것을 의미하기 때문입니다. Chrome 확장 프로그램이 다른 프레임에서 코드를 실행하는 몇 가지 방법이 있습니다. –

관련 문제