验证我用document.write()编写的html文档

时间:2011-09-26 17:57:15

标签: javascript html-validation

首先请允许我声明我知道在任何情况下我都不应该为真实网站做这件事。好。这就不合适了。

我的一位同事表示Javascript不是一种“真正的”编程语言(他对“真实”的定义似乎是“它编译”),因为它依赖于其他语言来做它的事情。

我告诉他我可以用javascript编写一个网站。

我确信这可以完成,使用document.write('')来获取doctype,以及一些脚本来创建dom和样式......但问题是因为页面是在没有JS的情况下验证的,所以无法向他展示浏览器正在查看的内容实际上是否有效。

任何人都知道我可以验证浏览器使用的实际来源而不是最初加载的javascript的方法吗?

3 个答案:

答案 0 :(得分:1)

在安装了Firebug的Firefox中加载网站。启动“HTML”视图并右键单击<html>节点并选择“复制HTML”。

答案 1 :(得分:1)

如果你真的想证明JS是一种“真正的”语言,那么你最好不要使用浏览器作为基础。 node.js服务器允许您生成HTML文档(如果您愿意,可以使用document.write,但DOM是一个选项(人们有used client side libraries to manipulate a document in node

由于JS在服务器上运行,您可以通过view-source从浏览器获取实际源代码或直接在URI处指向验证程序(只要它是公共的或您安装a local copy的验证器)

答案 2 :(得分:0)

使用JavaScript最接近的是:

var generatedHTML = document.documentElement.innerHTML;
//Retrieves everything within the (missing)HTML tags.
//The only missing parts are DOCTYPE and the <html> itself

var txt = document.createElement("textarea");
txt.style.cssText = "width:99%;height:99%;position:fixed;z-index:999;top:0;left:0";
txt.value = generatedHTML;
txt.ondblclick = function(){this.parentNode.removeChild(this)};
//Adding a simple function to easily remove the textarea once finished

document.body.appendChild(txt);

Bookmarklet(我稍微将代码调整为紧凑):

javascript:void(function(){var t=document.createElement("textarea");t.style.cssText = "width:99%;height:99%;position:fixed;z-index:999;top:0;left:0";t.value=document.documentElement.innerHTML;txt.ondblclick=function(){t.parentNode.removeChild(t)};document.body.appendChild(t)})()
  1. 关注生成的textarea
  2. 手动添加DOCTYPE + <html>标记
  3. 将textarea的内容复制到验证器:http://validator.w3.org/#validate-by-input