读书人

【编程游戏】网页版脚本输出自己。该如

发布时间: 2012-03-09 21:42:54 作者: rapoo

【编程游戏】网页版脚本输出自己。
比如:

C/C++ code
main(){char q=34,n=10,*a="main(){char q=34,n=10,*a=%c%s%c;printf(a,q,a,q,n);}%c";printf(a,q,a,q,n);}
程序运行后正好输出自己,一字不差。

有一个网站专门收集这类代码-》传送门
历史发起的帖子(C#)传送门

要求:
1、htm文件;
2、浏览器中输出源文件一样,包括大小写、标点符号;
3、兼容IE6+、FF、Chrome。

奖励:
1、第一个完成,加20分;
2、源文件最短,加100分;
3、之前没有使用过的方法,加10分

下周一结贴给分。

模板:
HTML code
<script>/* todo */</script>


谢谢关注。

[解决办法]
JScript code
<script>var httpRequest=function(){    var xmlHttp=false;    try{        xmlHttp = new XMLHttpRequest();    }    catch(trymicrosoft){        try{                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");        }        catch(othermicrosoft){            try{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")}            catch(failed){}        }    }   return xmlHttp;};var ajaxGet=function(url,functionCallback){    var xmlHttp = httpRequest();    xmlHttp.open("get",url,true);    xmlHttp.onreadystatechange = function(){        if(xmlHttp.readyState == 4&&xmlHttp.status == 200){            functionCallback(xmlHttp);        }    };    xmlHttp.send(null);};window.onload=function(){    ajaxGet(window.location.href,        function(xmlHttp){            var str=xmlHttp.responseText;            var reg=new RegExp("<([^>]+)>","img");            str=str.replace(reg,"<$1>");            document.body.innerHTML=str;        }    );};</script>
[解决办法]
zswang

你的代码运行不通过,哇哈哈!
没有考虑页面加载的问题
[解决办法]
我来一个
JScript code
function encode(v){return v.replace(/</g,'<');}window.onload=function(){  var pre=document.createElement('pre');  pre.innerHTML=typeof(HTMLElement) != "undefined"?      encode(document.createElement("DIV").appendChild(document.documentElement.cloneNode(true)).parentNode.innerHTML):encode(document.documentElement.outerHTML);  document.body.appendChild(pre);}
[解决办法]
HTML code
<script type="text/javascript">    window.onload=function()    {        var arrcontrol=document.getElementsByTagName("script")[0];        document.write(arrcontrol.parentNode.innerHTML.replace(/</g,"<").replace(/>/g,">"))    };</script>
[解决办法]
探讨

我来一个
JScript code
function encode(v){return v.replace(/</g,'<');}
window.onload=function(){
var pre=document.createElement('pre');
pre.innerHTML=typeof(HTMLElement) != "undefined"?
……

[解决办法]
借楼上的构思。
JScript code
<script language="javascript">var a=[];a[0]='script',a[1]='<',a[2]='>';document.write(document.getElementsByTagName('script')[0].parentNode.innerHTML.replace(/(script|SCRIPT)/g,a[0]).replace(/&/g,'&').replace(/</g,a[1]).replace(/>/g,a[2]));</script>
------解决方案--------------------


改了一下,刚没想清this的指向。

JScript code
(s = function () { (function (b) {document.write('(' + b.s + ')()')})(window); })()
[解决办法]
顶起来。。。

伴水兄多给两分!!!
[解决办法]
探讨
3、之前没有使用过的方法,加10分

[解决办法]
依然用innerHTML取内容,用一个别的编码方法,
JScript code
d = document;str=d.getElementsByTagName('script')[0].parentNode.innerHTML;t = d.createElement("div");(t.textContent != undefined) ? (t.textContent = str) : (t.innerText = str);d.write(t.innerHTML);
[解决办法]
重发一下,忘写外边标签了。
JScript code
<script language="javascript" >d = document;str=d.getElementsByTagName('script')[0].parentNode.innerHTML;t = d.createElement("div");(t.textContent != undefined) ? (t.textContent = str) : (t.innerText = str);d.write(t.innerHTML);//(s = function(){document.write('(s = ' + window.s + ')()')})()</script>
[解决办法]
我也来一个,主要是接分。
JScript code
<script>document.write("<script>"+document.scripts[0].innerHTML.replace(/&/ig,"&")+"</script>")</script>
[解决办法]
这样? ^_^

JScript code
<script>+function(){var r = /(<script>)([\s\S]*?)(<\/script>)/i;var s = document.documentElement.innerHTML.match(r)[0];var ret = s.replace(r,function(a,b,c,d){return b.toLowerCase()+c+d.toLowerCase()});alert(ret);}();</script>
[解决办法]
<script type="text/javascript" id="my">
(function(){alert(document.getElementById("my").innerHTML)})();
</script>
[解决办法]
我也来一个吧.....
JScript code
<script type="text/javascript">//我也来一个吧。^_^(function(){    var obj = document.getElementsByTagName("script");    document.write(obj[obj.length-1].parentNode.innerHTML.replace(/<([^>]+)>/g, "<$1>").replace(/\n/g,"<br/>").toLowerCase())//你看我输出自己输出自己——})();</script>
[解决办法]
纠正:
JScript code
<script type="text/javascript">//我也来一个吧。^_^(function(){    var obj = document.getElementsByTagName("script");    document.write(obj[obj.length-1].parentNode.innerHTML.replace(/<([^>]+)>/g, function($1,$2){return "<"+$2.toLowerCase()+">"}).replace(/\n/g,"<br/>"))//我输出自己输出自己——})();</script>
[解决办法]


发表不成,说有“非法字符”。只好去我的Blog里看了。
http://blog.csdn.net/KiteGirl/archive/2010/06/07/5652091.aspx
[解决办法]
JScript code
<script id='a'>document.write(document.getElementById('a').innerHTML)</script> 

读书人网 >JavaScript

热点推荐