如何在GreaseMonkey的body而不是Head中插入Javascript代码
How to insert Javascript code in the body instead of Head in GreaseMonkey
在用GreaseMonkey调用它之前,我需要先加载一个javascript函数。但似乎GreaseMonkey总是把我的代码在html的头部。如何将代码插入正文中呢?最好放在最后
直接在这里回答:
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调用它?为什么要把它插入页面呢?注意,在上面的代码中,调用是在page作用域中,而不是从GM,在这种情况下,您不能从GM调用它,嗯…你必须使用不安全,但通常不建议调用它,你必须在页面中插入节点,如
someplace.innerHTML = '<a onclick=myFunc()>Execute myFunc</a>';
你想要插入的函数需要在页面范围内吗?您将无法从GM作用域中调用它,如果不这样做,只需将函数留在GM作用域中并调用它,而不插入。
您可以定义一个函数,然后将其直接写入正文末尾的脚本元素中。例如:
function myFunc() {
// ...
}
document.body.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + myFunc.toString() + ")();";
document.body.appendChild(script);
}, false);
相关文章:
- 将样式表插入iframe
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 如何动态插入jquery代码
- 动态插入的表:JQuery未检测到最后一行
- 使用JavaScript动态插入DIV的成本有多高
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 将对象动态插入到现有对象中
- 将数组中的值插入到表中
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 使用PHP插入HTML在JavaScript上不起作用
- javascript:将数据库中的数据插入到html5文本字段中
- 从数据库中获取数据并插入JavaScript变量
- 如何使用innerHtml正确插入html
- AngularJS指令,在元素后插入HTML
- 当用户按下回车键时,自动在text区域/text中插入消息
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- 如何在GreaseMonkey的body而不是Head中插入Javascript代码
- 在PageMod (Firefox插件SDK)的HEAD标签的顶部插入一个脚本
- 在head标签内插入字符串