如何间接使用ContentScripts中的网页定义的函数?

时间:2013-08-02 23:31:49

标签: javascript google-chrome google-chrome-extension xss code-injection

Chrome Extension Developer's Guide之后,我知道,

  

内容脚本有一些限制。他们不能

     
      
  • 使用chrome。* API(chrome.extension的部分除外)
  •   
  • 使用其扩展程序页面定义的变量或函数
  •   
  • 使用由网页或其他内容脚本定义的变量或函数
  •   

但我可以间接实现这个目标,还是有任何例子?

例如:-injected-Page.html

==========

<html>
  <script>
    function blabla(){
    //do something
    }
  </script>
</html>

如何在内容脚本中使用该方法?

1 个答案:

答案 0 :(得分:1)

正如方 觉所说,你必须注入你的脚本。

var actualCode = '(' + function() {
    blabla();
} + ')();';
var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

但有一点你应该知道,blabla()仍在处理网页的上下文,而不是你的内容脚本,所以你可以调用它,但这就是你所能做的。例如,您无法获取返回值并在内容脚本上使用它。这是不可能的。