使用Chrome扩展程序更改iframe中的文字

时间:2014-03-05 17:07:42

标签: javascript jquery google-chrome-extension

我做了一个很棒的镀铬扩展程序来编辑我不喜欢的单词...除非我无法让它在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, '▓▓▓▓▓▓');    
});

1 个答案:

答案 0 :(得分:-3)

由于Same Origin Policy,您无法访问不在同一域中的iframe内容。它们对页面上运行的所有脚本或扩展都是完全不透明的(即javascript甚至看不到内容)。你无能为力。除非iframe的源是完全相同的域(这是罕见的)或源页面具有Access-Control-Allow-Origin标头集(也很少见),否则任何浏览器中运行的代码都无法访问iframe的任何内容。虽然它有时令人讨厌,但这是一个非常重要的安全功能,可以防止各种恶意活动。

编辑:对不起,当我的意思是同源政策时,我最初写的是CORS。 CORS是围绕执行代码绕过SOP的方法,但它需要设置Access-Control-Allow-Origin。