在JS中加载文档之前调用函数

时间:2013-08-15 10:46:07

标签: javascript tampermonkey

我的朋友要我这样做。

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

他有篡改猴子安装铬。我必须在篡改猴子中制作一个脚本,以便当它到达网站时它将改变网络内容。

源代码是:

// ==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("...");}即可运行。是否有任何方法可以在加载文档之前运行脚本,即在地址栏上键入网址或单击超链接后立即执行。

3 个答案:

答案 0 :(得分: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上运行 for now ,但在其他浏览器上无效。例如,在Firefox上,document.write调用将抛出错误:

      

    错误:操作不安全。

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

  2. 虽然像这样的用户可以(大多数情况下)工作;它是一种klugey,脆弱,低性能的方法,很容易被击败。以下是一些更好,更快,更容易,更难以让精明的孩子更加努力的方法:

    • 使用家庭路由器的站点块和/或家长控制。如今,几乎每个路由器和/或调制解调器都具有此功能。
    • 安装执行此类阻止的众多扩展程序之一。
    • 使用Adblock规则阻止该网站。
    • Block the site with the machine's hosts file
    • 使用代理服务器。
    • Super User上搜索更多选项。

答案 1 :(得分:0)

定义后立即调用该函数。喜欢在标题或somehwere。

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

答案 2 :(得分:0)

逐行解析HTML文件。所以,如果你写你的&lt;脚本&gt;就在&lt; html&gt;标记它将在其他任何事情之前执行。