The quick and dirty way: Please only use innerHTML
for brand-new content.
var newHTML = document.createElement ('div');
newHTML.innerHTML = '
<div id="gmSomeID">
<p>Some paragraph</p>
etc.
</div>
';
document.body.appendChild (newHTML);
A complete script showing the somewhat better jQuery way (and with new, ECMAScript 6, multiline string):
// ==UserScript==
// @name YOUR_SCRIPT_NAME
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
//--- The @grant directive is used to restore the proper sandbox.
$("body").append ( `
<div id="gmSomeID">
<p>Some paragraph</p>
etc.
</div>
` );
Both methods will place the new content like this:
<!-- NEW STUFF INSERTED HERE -->
</body>
Which is a good place for it.
Even though the HTML is at the end of the page, you can use CSS to display it anywhere with something like:
GM_addStyle ( "
#gmSomeID {
position: fixed;
top: 0px;
left: 0px;
}
" );
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…