问题描述
var TopLink=document.createElement("a");
TopLink.setAttribute("href","#top");
TopLink.innerHTML = "Top";
TopLink.setAttribute("class","btn btn-default btn-ref");
TopLink.setAttribute("style","position:absolute; top:280px; right:40px; width:120px; background:yellow;");
document.body.appendChild(TopLink);
但是,我需要更新<body>
标签以使其ID值为top
,因为它不在页面上。
我尝试了各种方法,例如:
// using jQuery
$(document).ready(function(){
$("body").attr('id','top');
});
// using vanilla js
var body_tag = getElementsByTagName("body");
body_tag.setAttribute("id","top");
我先来看一下:assigning ID's to body tag using jquery
但是它没有回答我的问题。
解决方法
这将起作用:
document.body.id = 'top';
getElementsByTagName
返回一个HTMLCollection,因此您不能对此调用setAttribute
。如果我没记错的话,它也需要加上document.
前缀。
我想jQuery方法会失败,因为您没有在页面上使用jQuery。无论如何,不需要使用jQuery做这么简单的事情。
,您可以像这样更改您的身体ID:
document.body.id = "top"
,
另一种方式是:
document.body.setAttribute("id","top");
<body></body>
,
不必添加ID。
但是,如果您想在Tampermonkey中使用jQuery将某些内容添加到正文中,则需要一些内容...
首先,将jQuery包含在脚本中,例如
// @require http://code.jquery.com/jquery-3.4.1.min.js
要在您的匿名函数中使用它,您必须添加它
(function($) {
'use strict';
//source
})(window.jQuery);
现在您可以使用jQuery运行一些东西。 您可以创建所需的任何元素,然后将其附加到主体。 在此示例中,我向Google正文添加了一个按钮。
// ==UserScript==
// @name Test
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.google.de/
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @grant none
// ==/UserScript==
(function($) {
'use strict';
let button = $("<button>Test</button>");
button.appendTo('body');
})(window.jQuery);
您实际上可以复制它并向其中添加自己的内容。
您可以看看Tampermonkey的documentation
请参见@match,以使用通配符选择器添加更好的URL匹配
请参见@require向脚本添加更多或另一个脚本。例如。 jQuery UI
注意:
我正在使用(function(){...});
,它将在浏览器解释您的ECMA- / javascript时立即调用自身。我猜在坦佩蒙奇它总是在这里结束。但是我不确定100%。
在运行此脚本时,可以随时使用$(document).ready(function(){ ... });
或短$(function(){...});
来确保DOM准备就绪。