3

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

4

1 回答 1

6

您在这里面临的问题如下:

  1. 您需要使用 content_scripts 而不是从后台页面运行代码。
  2. 从后台页面运行的代码和作为内容脚本运行的代码是“沙盒”。这意味着您的代码无权访问页面创建的全局变量。您的扩展程序无权访问它。好消息是你仍然可以做到。不过,你必须聪明。

在您的扩展程序中,您必须在页面的“头部”中注入一个新的 Script 标签。您必须创建一个新的脚本标签并将其附加到页面的头部。在附加它之前,您需要将脚本标记的“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”对象。

于 2014-12-03T18:09:44.180 回答