我正在构建一个浏览器扩展,我在year YEAR
标记内部有一个函数,用于修改我需要注入任何给定网页的username
的DOM。整个函数是一个字符串(<script>
)。我正在使用jquery来实现这个目标:
<head>
这很好用。我想删除jQuery有几个原因但是当我尝试使用vanilla javascript创建一个"<script>function content blah blah</script>"
元素注入$('head').prepend(modFunction);
时,一切都失败了。到目前为止,我尝试了两种方法:
1
<script>
2。<head>
两次javascript尝试都会将 var headSelector = document.querySelector('head');
var el = document.createElement('div');
el.innerHTML = modFunction;
modFunction = el.firstChild;
headSelector.insertBefore(modFunction, headSelector.firstChild);
标记带有正确的函数注入document.head.insertAdjacentHTML('afterbegin', modFunction);
,但是,都不会执行该函数。不知道为什么jQuery正在工作,而vanilla javascript却没有。任何帮助将不胜感激。感谢
答案 0 :(得分:4)
你有一些错误。
如果您的import pymongo
client = pymongo.MongoClient()
db = client['tese']
carteiras_cvm = db['carteiras_cvm']
pipeline_acoes =[{"$unwind":"$posicao"},
{"$match" : {"posicao.detalhes.Tipo de Aplicação:" : { "$in" : ['Ações','Brazilian Depository Receipt - BDR',
'Ações e outros TVM cedidos em empréstimo','AÇÕES RECEBIDAS EM BONIFICAÇÃO']}}},
{"$project":{"cnpj_fundo":"$cnpj_fundo", "data_carteira":"$data_carteira", "tipo_aplicacao":"$posicao.detalhes.Tipo de Aplicação:","cod_ativo":"$posicao.detalhes.Cod Ativo:","cod_isin":"$posicao.detalhes.Cod ISIN:","cod_isin":"$posicao.detalhes.Cod ISIN:","descricao":"$posicao.detalhes.Descrição:","posicao_final":"$posicao.posicao_final","perc_carteira":"$posicao.perc_carteira","pl_fundo":"$pl_posicao"}}]
def aggregate(db, pipeline):
return [doc for doc in carteiras_cvm.aggregate(pipeline).batch_size(5)]
resultados_acoes = aggregate(carteiras_cvm, pipeline_acoes)
是一个在其前后包含modFunction
标记的字符串,则您的代码无法正常工作,因为更改了<script>
innerHTML
}将不会执行添加的脚本。
使用div
函数是不必要的,因为insertAdjacentHTML
现在是modFunction
类型的对象,它将在您的脚本之前插入Text
字符串。
而是使用[object Text]
函数将正确的新脚本元素插入到头部。
尽管@ Jantho1990表示最好从文件加载脚本,但许多浏览器都使用缓存,因此如果您更改脚本源,它将不会在浏览器中始终可见。
appendChild
答案 1 :(得分:-2)
SoftwareEngineer171的答案有效(参见https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script中的文字),但我想指出几点:
您不应该将<div>
元素注入<head>
。它是无效的HTML,也是一般的不良做法。
通常,最好将JavaScript作为文件存储在服务器上,并使用src属性将该文件存入页面。这不仅更安全,而且当您需要返回并更新代码时,它还可以为您节省大量工作。
我会推荐以下解决方案:
yourJavaScriptFile.js
function content blah blah
内联:
<script type="text/javascript" src="yourJavaScriptFile.js"></script>