gpt4 book ai didi

javascript - 重写内容

转载 作者:行者123 更新时间:2023-12-02 14:07:15 25 4
gpt4 key购买 nike

我想重写<html>使用 Greasemonkey 的内容。

我尝试过这个:

document.open()
document.write(html)
document.close()

不工作。

document.body.innerHTML = html仅替换内容。

一些建议?

最佳答案

不要使用document.write() 。它具有各种安全限制(由于坏人的滥用)并且是 fraught with pitfalls .

如果您尝试在用户脚本中使用它,就像您的问题一样; Firefox 通常会完全停止页面或进入永久 Connecting...然后重新加载周期 - 取决于您的脚本何时触发以及您是否使用 unsafeWindow.stop() .
这种代码在 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

然后放置一个 unsafeWindow.stop ();在用户脚本代码的顶部。

<小时/><小时/><小时/>

回复:"How do I rewrite the head content with this solution?" :

这个例子已经重写了 <head> 。新领导将是:

<head><title>My new page title</title></head>

在这种情况下。

要添加其他头元素,请使用 DOM 代码,例如:

var newNode     = D.createElement ('base');
newNode.href = "http://www.example.com/dir1/page.html";
var targ = D.getElementsByTagName ('head')[0];
targ.appendChild (newNode);

异常(exception):

  1. 只需使用 GM_addStyle()轻松创建<style>节点。
  2. 添加<script>在您的场景中,节点几乎总是毫无意义的。只需让您的用户脚本执行任何所需的 JS 处理即可。
  3. 一些标签,例如 <meta>将被添加但不会被处理(尤其是在 Firefox 中)。根据参数,这些仅在从服务器初始加载时进行解析。

关于javascript - 重写<html>内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com