Greasemonkeyを使用して<html>
のコンテンツを書き直したいと思います。書き換え<html>内容
私はこれを試してみました:
document.open()
document.write(html)
document.close()
は働いていません。
document.body.innerHTML = html
のみがコンテンツを置き換えます。
いくつかの提案がありますか?
Greasemonkeyを使用して<html>
のコンテンツを書き直したいと思います。書き換え<html>内容
私はこれを試してみました:
document.open()
document.write(html)
document.close()
は働いていません。
document.body.innerHTML = html
のみがコンテンツを置き換えます。
いくつかの提案がありますか?
document.write()
を使用しないでください。それはすべての種類のセキュリティ制限を持っています(悪人による悪用のため)fraught with pitfallsです。
あなたの質問のように、それをユーザスクリプトで使用しようとすると、 Firefoxは通常、ページを完全に停止させるか、スクリプトがいつ起動するか、を使用するかどうかに応じて、Connecting...
に入り、その後リロードサイクルに入ります。
この種のコードはまだChromeで動作していますが、残念ながら残念です。他のブラウザについてはわかりません。
正しい方法は、DOMメソッドを使用することです。たとえば:
var D = document;
var newDoc = D.implementation.createHTMLDocument ("My new page title");
window.content = newDoc;
D.replaceChild (
D.importNode (newDoc.documentElement, true),
D.documentElement
);
D.body.innerHTML = '<h1>Standby...</h1>';
性能を向上させるために、あなたも使用したい場合があります。その後、
// @run-at document-start
// @grant unsafeWindow
とuserscriptコードの先頭にunsafeWindow.stop();
を置きます。
再:"How do I rewrite the head content with this solution?"
:
この例では、既に<head>
を書き換えます。新しい頭部は:
<head><title>My new page title</title></head>
この場合になります。
のようなDOMコードを使用して、追加のヘッド要素を追加するには:ちょうど簡単<style>
ノードを作成するためにGM_addStyle()
を使用
var newNode = D.createElement ('base');
newNode.href = "http://www.example.com/dir1/page.html";
var targ = D.getElementsByTagName ('head')[0];
targ.appendChild (newNode);
。
<script>
ノードを追加することは、シナリオではほとんど常に無意味です。あなたのuserscriptに必要なJS処理をさせてください。<meta>
のようなタグは追加されますが、処理されません(特にFirefoxの場合)。パラメータによっては、サーバからの初期ロード時にのみ解析されます。
このソリューションでヘッドコンテンツを書き直すにはどうすればよいですか? – mykiwi
@mykiwiコードを実行するだけです。あなたが望むHTMLは 'D.body 'にあります。innerHTML = '
スタンバイ...
'; ' –@mykiwi、更新された回答を参照してください。 –