在tampermonkey中使用JS或jQuery设置Body标签的ID

问题描述

我想使用JS这样向页面添加链接

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");

但是都不起作用-如何设置body标签的ID属性

我先来看一下: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准备就绪。