0

好的,首先让我声明,我知道在任何情况下我都不应该为真实站点这样做。行。那不碍事了。

我的一位同事说 Javascript 不是一种“真正的”编程语言(他对“真正”的定义似乎是“它可以编译”),因为它依赖于其他语言来完成它的工作。

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

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

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

4

3 回答 3

1

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

于 2011-09-26T18:02:52.913 回答
1

If you really want to demonstrate that JS is a "real" language, then you would probably be better off not using a browser as the foundation. A node.js server would allow you to generate an HTML document (using document.write if you like, but DOM is an option (and people have used client side libraries to manipulate a document in node.

Since the JS runs on the server, you can get the actual source from the browser via view-source or point the validator directly at the URI (so long as it is either public or you install a local copy of the validator)

于 2011-09-26T18:08:13.210 回答
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);

书签(我稍微调整了代码以使其紧凑):

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
于 2011-09-26T18:00:22.863 回答