javascript - Firefox 插件 SDK 注入(inject) jquery

标签 javascript jquery firefox-addon firefox-addon-sdk

$(document).ready(...) 中的脚本不起作用,知道为什么吗? 看来我尝试注入(inject)的脚本最后加载了。

这是我的代码:

主要.js

pageMod.PageMod({
    include: "*",
    contentScriptWhen: 'start',
    contentScriptFile: data.url('inject.js')
});

注入(inject).js

var script = document.createElement('script');
script.src = "resource://directoryOfMyAddon/data/jquery/jquery-1.11.0.min.js";
document.getElementsByTagName('head')[0].appendChild(script);

测试.html

<html>
<head>
</head>
<body>
<div id="helloworld"></div>
<script type="text/javascript">
    $(document).ready(function(){
        $("#helloworld").text("Hello, world!");
    });
</script>
</body>
</html>

谢谢哦=)

最佳答案

您可以使用您描述的技术注入(inject) jquery,但取决于 contentScriptWhen在您的 page-mod 中设置选项你不会看到.ready() 因为只有在 load 之后才会附加内容脚本( contentScriptWhen="end" (默认))或 DOMContentLoaded (contentScriptWhen="ready")。

你可以使用 contentScriptWhen="start" ,但那时可能还没有一个节点可以附加你的 <script>标记为。

但是,我要提一下,强烈建议不要(阅读:不会通过 AMO 审查)将 jquery 注入(inject)随机页面,因为这可能会干扰页面可能已经加载的 jquery 版本(或其他任何内容)否则网站分配给 $ )。

相反,如果您的所有代码都驻留在您的内容脚本中会更好。

关于javascript - Firefox 插件 SDK 注入(inject) jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328849/

相关文章:

javascript - 字符串太长无法使用?

xml - 如何访问正确的 XUL 缩放更改值

javascript - 查询 : Understanding Syntax

javascript - URL 中带有 GET 参数的 AJAX POST 请求

javascript - 根据输入类型数值创建复选框字段

firefox - 安装后是否可以编辑/修改 Firefox 插件?

javascript - clearInterval() 不会停止 setInterval() - Firefox 扩展开发

javascript - 对先前声明的变量进行解构赋值时出现 linter 错误 "Unexpected token ="

javascript - AWS Amplify Authenticator React Native Tab Bar Navigation白屏,而不是呈现我的应用

javascript - 根据json填充select元素