1

我的朋友要求我这样做。

他需要阻止他的孩子访问某些网站。

他安装了 chrome 的篡改猴子。我必须在 tamper-monkey 中制作一个脚本,这样当它到达网站时,它会改变网页内容。

源代码是:

// ==UserScript==
// @name       My Fancy New Userscript
// @namespace  http://use.i.E.your.homepage/
// @version    0.1
// @description  enter something useful
// @match      http://www.harmful-website.com/*
// @copyright  2012+, You
// ==/UserScript==
document.write("<b>You are not allowed to visit this site</b>");

此脚本仅在网站加载完毕后才有效。但是他的孩子在中间停止了网站的加载,他们可以查看其中的一部分。

甚至document.onload=function(){document.write("...");}在加载后工作。有没有办法让脚本在加载文档之前运行,即在地址栏上键入网址或单击超链接之后立即运行。

4

3 回答 3

1

您的代码将起作用,您只需要设置@run-at document-startDoc,如下所示:

// ==UserScript==
// @name        site blocker
// @match       http://www.harmful-website.com/*
// @run-at      document-start
// ==/UserScript==

document.write ("<b>You are not allowed to visit this site</b>");


重要的:

  1. 目前,这适用于 Chrome 和 Tampermonkey,但不适用于其他浏览器。例如,在 Firefox 上,document.write调用会抛出错误:

    错误:操作不安全。

    (但页面仍然是完全空白的。)

  2. 虽然像这样的用户脚本(大部分)会起作用;这是一种笨拙、脆弱、低性能的方法,很容易被击败。以下是一些更好、更快、更容易、更难让聪明的孩子学习的方法:

    • 使用家庭路由器的站点屏蔽和/或家长控制。如今,几乎每个路由器和/或调制解调器都具有此功能。
    • 安装执行这种阻止的众多扩展之一。
    • 使用 Adblock 规则阻止该网站。
    • 使用机器的 hosts 文件阻止该站点
    • 使用代理服务器。
    • 超级用户上搜索更多选项。
于 2013-08-19T09:24:35.037 回答
0

只需在定义后立即调用该函数。就像在标题中一样。

但是,您需要考虑该函数是否实际上具有所需的一切,例如页面上的 HTML 元素(如果它访问其中任何一个元素),因为在调用您的函数时不一定会加载这些元素。

于 2013-08-15T10:49:03.037 回答
0

HTML 文件逐行解析。因此,如果您在 < html > 标记之后编写 < script >,它将在其他任何操作之前执行。

于 2013-08-15T10:49:21.943 回答