在使用GreaseMonkey调用之前,我需要先加载一个javascript函数。但似乎GreaseMonkey总是将我的代码放在html的头部。我怎样才能在体内插入代码。最好是在最后
答案 0 :(得分:2)
直接在这里回答:
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>';
要插入的此功能是否需要在页面范围内?您将无法从GM范围调用它,如果不是将该函数保留在GM范围内并调用它,则不插入。
答案 1 :(得分:0)
您可以定义一个函数,然后将其直接写入正文末尾的脚本元素。 E.g:
function myFunc() {
// ...
}
document.body.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + myFunc.toString() + ")();";
document.body.appendChild(script);
}, false);