Google Chrome扩展程序就像在控制台中一样运行?

时间:2012-11-06 17:42:49

标签: javascript google-chrome google-chrome-extension deezer

我正在尝试制作一个Google Chrome扩展程序,用于暂停/播放DEEZER(www.deezer.com)中的付款人。我在Google Chrome JavaScript控制台中手动运行代码“playercontrol.doAction('next')”,我可以操纵加热器播放器,所以我看了将代码注入带有扩展名的Deezer网页的可能性,但我还没有成功地做到了这一点。 是否可以在Deezer网页中运行JavaScript代码,就像它来自Google Chrome中的控制台一样? 如果是这样的话?

1 个答案:

答案 0 :(得分:4)

您遇到的问题如下:

  1. 您需要使用content_scripts而不是从后台页面运行代码。
  2. 代码从后台页面运行,代码运行为内容脚本为“沙盒”。这意味着您的代码无法访问页面创建的全局变量。您的扩展程序无权访问它。好消息是你仍然可以做到这一点。但你必须聪明一点。
  3. 在您的扩展程序中,您必须将新脚本标记注入页面的“头部”。您必须创建一个新的脚本标记并将其附加到页面的头部。在追加它之前,需要将脚本标记的“innerHTML”设置为要运行的JavaScript。以下是您需要做的事情的要点。

    var myJavaScript = "alert('hey guys');";    //You need to put your JS here. 
    var scriptTag = document.createElement("script");
    scriptTag.innerHTML = myJavaScript;
    document.head.appendChild(scriptTag);
    

    这会将新脚本标记放入头部,从而绕过Chrome扩展程序的安全性。这将使新脚本可以访问页面上的常规全局变量,即:您将可以访问“playercontrol”对象。