我在做一个chrome扩展。当扩展运行时,我想使用javascript在弹出页面中添加或删除一些内容脚本文件。
在我的扩展中,用户从弹出页面中选择颜色。有5种颜色。所以我有5个javascript文件--每种颜色一个。
那么,弹出页面中的哪些javascript代码会更改运行内容脚本javascript文件呢?
发布于 2012-08-30 15:33:49
首先,如果您有5个JS文件,每个文件对应5种颜色,这就有点"Clone And Modify Programming"的味道--这不是一个好习惯。
明智的做法是使用one JS文件,并使用"DRY“代码将颜色作为参数关闭。请参见"Dont Repeat Yourself" (原文如此)。
要从扩展的后台加载整个内容脚本,请参阅"Programmatic injection"。
至于动态添加或删除javascript文件...
<script>节点中,并且您将其删除,解析的函数、变量、计时器、事件侦听器等仍将在内存中处于活动状态。1. You can overwrite named objects. For example, if _File‗1.js_ globally sets `x=7;`, you can later load _File‗2.js_ to set `x=11;`.
2. You can cancel named timers -- but you must explicitly code each one.
3. You can cancel known event listeners, but you must again deliberately code this.
4. You **can't** override anonymous objects ( `(function () {... ...} )()` ).
5. You **can't** cancel anonymous timers.在大多数情况下,这都是比它值得的麻烦。最好把你的代码设计到不必要的地方。
动态添加JS文件的...
web_accessible_resources部分中。例如:{ "manifest_version":2,"content_scripts":[{ "exclude_globs":,"include_globs":,"js":"MyContentScript.js“,"matches":"http://YOUR_SERVER.COM/YOUR_PATH/*”} ],"name":“动态加载JS,demo","version":"1","web_accessible_resources":"MyJavascript_1.js","MyJavascript_2.js","MyJavascript_3.js”}
chrome.extension.getURL,如下所示:(scriptNode); D=文档;var scriptNode = D.createElement (‘(scriptNode);’);scriptNode.type = "text/javascript";scriptNode.src = chrome.extension.getURL ("MyJavascript_2.js");var targ = D.getElementsByTagName('head') || D.body || D.documentElement;targ.appendChild javascript
https://stackoverflow.com/questions/12177607
复制相似问题