在JS中加载文档之前调用函数
Calling a function before the document loads up in JS
我的朋友让我这么做。
他需要阻止他的孩子访问某些网站。
他给猴子装了铬。我必须在篡改猴子中制作一个脚本,这样当它到达网站时,它就会更改网站内容。
源代码是:
// ==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("...");}
在加载后也能工作。是否有任何方法可以在加载文档之前运行脚本,即在地址栏上键入网址或单击超链接之后立即运行。
您的代码会工作,您只需要设置@run-at document-start
Doc,如下所示:
// ==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>");
重要信息:
这将在Chrome和Tampermonkey上运行,但在其他浏览器上不起作用。例如,在Firefox上,
document.write
调用将抛出错误:错误:操作不安全。
(但页面仍然是一片空白。)
尽管像这样的用户脚本可以工作(大部分);它是一种笨拙、脆弱、低性能的方法,很容易被击败。以下是一些对精明的孩子来说更好、更快、更容易、更难的方法:
- 使用家庭路由器的站点块和/或家长控制。现在,几乎每个路由器和/或调制解调器都有这个功能
- 安装许多执行这种阻塞的扩展中的一个
- 使用Adblock规则阻止网站
- 使用计算机的主机文件阻止站点
- 使用代理服务器
- 在超级用户上搜索更多选项
只需在定义函数后立即调用它。就像在页眉或其他地方一样。
然而,您需要考虑函数是否真的拥有它所需要的一切,比如页面上的HTML元素(如果它访问其中的任何元素),因为在调用函数时不一定会加载这些元素。
HTML文件是逐行解析的。所以如果你写你的<script>在<html>标记它将在执行任何其他操作之前执行。
相关文章:
- 如何从模块链中调用函数.导出到节点中
- 调用函数内部的函数
- 在javascript中调用c函数
- DropDownListFor赢得't在更改时调用函数
- Javascript页面调用函数
- 在动画结束之前调用函数
- 允许父窗口在其不同域的子iframe上调用函数
- 运行Infinite Scroll后调用函数时出现问题
- JavaScript:在调用函数的文本输入上按enter键
- 使用大括号和不使用bracs调用函数的区别
- javascript在事件上调用函数
- 从index.html调用函数,该函数无限循环
- 从带参数的字符串变量调用函数中的函数
- 为什么 JS 不在滚动时调用函数
- 是否可以在不更改上下文的情况下调用函数.apply
- 如何在ES6类中使用参数调用函数
- AngularJS:调用函数时编号不更新
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 在JavaScript中调用函数时自定义此选项
- 调用函数中声明的变量