插入站点时修改脚本

时间:2015-08-11 00:47:00

标签: javascript jquery ajax

我的代码是从外部网站提取脚本。

var url = "//example.com/script-url.js";
 $.ajax({
  url: url,
  dataType: 'jsonp'
});

它工作正常,但它所提取的脚本是由第三方网站生成的。它所引入的脚本我需要在加载到我的网站时进行修改。

第三方脚本以此开头:

(function() {

   document.getElementById("weedmenuPane").innerHTML = //script continues

脚本中的另一个实例是weedmenuPane

我需要将ID weedmenuPane修改为另一个ID。当脚本插入我的网站时,有没有办法做到这一点?

注意:我无法控制插入网站的第三方脚本。

1 个答案:

答案 0 :(得分:3)

由于此脚本来自第三方站点,因此它是一个跨源脚本。因此,您不能使用Ajax调用直接检索它,除非它所在的服务器恰好支持CORS。

从客户端,它只能作为JSONP使用,方法是将其作为<script>标记插入,在您有机会修改它之前立即执行它。所以,这里没有运气。

另一种选择是让您的客户端从您的服务器请求脚本。然后,您的服务器可以从其他站点检索它(服务器访问时没有跨源限制)。然后,您的服务器可以在将脚本返回给客户端之前修改脚本。

仅供参考,另一种解决办法似乎可能是您可以暂时修改您的网站以在脚本运行时使用weedmenuPane ID(以便它在您所需的对象上运行)然后在脚本运行后,您可以将id恢复到以前的状态。