如何在GreaseMonkey中将Javascript代码插入主体而不是头部

如何在GreaseMonkey中将Javascript代码插入主体而不是头部,javascript,greasemonkey,Javascript,Greasemonkey,在使用GreaseMonkey调用之前,我需要先加载一个javascript函数。但GreaseMonkey似乎总是把我的代码放在html的开头。如何在正文中插入代码。最好在最后定义一个函数,然后直接将其写入正文末尾的脚本元素。例如: function myFunc() { // ... } document.body.addEventListener('load', function() { var script = document.createElement("s

在使用GreaseMonkey调用之前,我需要先加载一个javascript函数。但GreaseMonkey似乎总是把我的代码放在html的开头。如何在正文中插入代码。最好在最后定义一个函数,然后直接将其写入正文末尾的脚本元素。例如:

function myFunc() {
    // ...
}    

document.body.addEventListener('load', function() {
    var script = document.createElement("script");
    script.textContent = "(" + myFunc.toString() + ")();";
    document.body.appendChild(script);
}, false);

在这里直接回答:

var newElem = document.createElement( 'script'); //create a script tag
newElem.type = 'text/javascript'; // add type attribute
newElem.innerHTML = 'function myFunc() { alert( "alerting"); } myFunc();'; // add content i.e. function definition and a call
document.body.appendChild( newElem); // Insert it as the last child of body
这是正式的方式,但最短的方式可能是

document.body.appendChild( document.createElement( 'script'));
document.body.lastChild.innerHTML = 'function myFunc() { alert( "the alert"); } myFunc();'; // add content i.e. function definition and a make a call
但是,您的问题描述令人困惑,您想在页面中插入一个函数,然后用GM调用它吗?那为什么要把它插入页面呢?请注意,在上面的代码中,调用在页面范围内,而不是来自GM,在这种情况下,您不能从GM调用它,嗯。。。您必须使用不安全但通常不建议使用,要调用它,您必须在页面中插入节点,如下所示:

someplace.innerHTML = '<a onclick=myFunc()>Execute myFunc</a>';
someplace.innerHTML='executemyfunc';

要插入的此函数是否需要位于页面范围内?您将无法从GM作用域调用它,如果不将函数保留在GM作用域中并调用它,则无需插入。

您好,我在GreaseMonkey中尝试了此代码。但警报没有发出。函数myFunc(){alert('works');}document.body.addEventListener('load',函数(){var script=document.createElement(“script”);script.textContent=“(“+myFunc.toString()+”);”;document.body.appendChild(script);},false);老实说,我现在甚至还没有安装Firefox。我只是让我的旧剧本的一部分适合你的需要。试着找出什么东西不管用。一定很近。可能是“body.addEventListener”不起作用。