如何使Google Chrome扩展程序运行jQuery脚本

时间:2011-02-17 17:46:07

标签: jquery google-chrome-extension

我有这个jquery脚本:

$('[id^=changesetList] tr').each(function () {
    var sid = $(this).attr('sid');
    $(this).find('td span.changesetDescription').append('<span class="csetHash">' + sid + '</span>').css('color','#777');
});

我想在访问kilnhg.com时运行它。

我输入kiln_hash.user.js文件并将其安装到Chrome中,但它没有做任何事情。

我认为这可能是因为它需要jQuery。

我已经阅读了一些教程,看起来我可能需要创建一个manifest.json文件并将其和.user.js文件放入一个.crx扩展名的zip文件中。< / p>

我仍然不知道我需要把它放在清单文件中。

我怎样才能让它发挥作用?


更新

我创建了一个manifest.json文件:

{
  "name": "Kiln Hash",
  "version": "1.0.1",
  "description": "Show hash in changeset list in Kiln",
  "content_scripts": [
    {
      "matches": ["https://*.kilnhg.com/*"],
      "js": ["jquery.js"]
    }
  ],
  "background_page": "bg.html"
}

我包含jquery.js文件(版本1.4.2)和bg.html文件:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="jquery.js"></script>

<script>

$(document).ready(function(){
    $(hash_link).click(function(){
        addHash();
        return false;
    });
});
function addHash()
{
    $('[id^=changesetList] tr').each(function () {
        var sid = $(this).attr('sid');
        $(this).find('td span.changesetDescription').append('<span class="csetHash">' + sid + '</span>').css('color','#777');
    });
}

</script>

<title>Untitled Document</title>
</head>

<body>
<a id="hash_link" href="#">Add Hash</a>
</body>
</html>

我将其打包成带有.crx扩展名的zip,当我将文件拖到Chrome中时,它会询问我是否要安装我说是的。然后它告诉我“糟糕的魔法数字”

因此,我转到Chrome开发人员信息中心并上传了该zip文件,它接受了它,它使我支付5美元上传,然后安装。但它仍然无能为力。

1 个答案:

答案 0 :(得分:23)

您不仅可能需要清单,清单是任何扩展的绝对必要部分。我不想这么说,但你可能需要先阅读一些关于扩展结构的内容,然后回答所有问题。

  • Overview(什么是内部扩展,什么是显示)
  • Content Scripts(如何使用jquery将脚本包含到特定域中)

(如果你愿意,我可以给你一个答案,但你自己阅读这些链接会更有益,所有这些都在很好的细节中描述和解释)

<强>更新

要在本地安装您的扩展程序,您无需将其存档,只需转到您的扩展程序chrome://extensions/,单击“开发人员模式”,“加载解压扩展程序”按钮,然后将其指向您的扩展程序文件夹。

如果要将脚本注入某个页面,则需要使用所谓的“内容脚本”。你的清单应该是这样的:

{
  "name": "Kiln Hash",
  "version": "1.0.1",
  "description": "Show hash in changeset list in Kiln",
  "content_scripts": [
    {
      "matches": ["https://*.kilnhg.com/*"],
      "js": ["jquery.js", "content_script.js"]
    }
  ]
}

<强> content_script.js:

$('[id^=changesetList] tr').each(function () {
    var sid = $(this).attr('sid');
    $(this).find('td span.changesetDescription').append('<span class="csetHash">' + sid + '</span>').css('color','#777');
});

在加载DOM并注入jquery之后,此内容脚本将在指定的域上运行。

您不需要背景页面。