var
global_html_pool = [];
var
global_script_pool = [];
var
global_script_src_pool = [];
var
global_lock_pool = [];
var
innerhtml_lock =
null
;
var
document_buffer =
""
;
function
set_innerHTML(obj_id, html, time) {
if
(innerhtml_lock ==
null
) {
innerhtml_lock = obj_id;
}
else
if
(
typeof
(time) ==
"undefined"
) {
global_lock_pool[obj_id +
"_html"
] = html;
window.setTimeout(
"set_innerHTML('"
+ obj_id +
"', global_lock_pool['"
+ obj_id +
"_html']);"
, 10);
return
;
}
else
if
(innerhtml_lock != obj_id) {
global_lock_pool[obj_id +
"_html"
] = html;
window.setTimeout(
"set_innerHTML('"
+ obj_id +
"', global_lock_pool['"
+ obj_id +
"_html'], "
+ time +
");"
, 10);
return
;
}
function
get_script_id() {
return
"script_"
+ (
new
Date()).getTime().toString(36)
+ Math.floor(Math.random() * 100000000).toString(36);
}
document_buffer =
""
;
document.write =
function
(str) {
document_buffer += str;
}
document.writeln =
function
(str) {
document_buffer += str +
"\n"
;
}
global_html_pool = [];
var
scripts = [];
html = html.split(/<\/script>/i);
for
(
var
i = 0; i < html.length; i++) {
global_html_pool[i] = html[i].replace(/<script[\s\S]*$/ig,
""
);
scripts[i] = {text:
''
, src:
''
};
scripts[i].text = html[i].substr(global_html_pool[i].length);
scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf(
'>'
) + 1);
scripts[i].src = scripts[i].src.match(/src\s*=\s*(\
"([^\"]*)\"|\'([^\']*)\'|([^\s]*)[\s>])/i);
if (scripts[i].src) {
if (scripts[i].src[2]) {
scripts[i].src = scripts[i].src[2];
}
else if (scripts[i].src[3]) {
scripts[i].src = scripts[i].src[3];
}
else if (scripts[i].src[4]) {
scripts[i].src = scripts[i].src[4];
}
else {
scripts[i].src = "
";
}
scripts[i].text = "
";
}
else {
scripts[i].src = "
";
scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf('>') + 1);
scripts[i].text = scripts[i].text.replace(/^\s*<\!--\s*/g, "
");
}
}
var s;
if (typeof(time) == "
undefined
") {
s = 0;
}
else {
s = time;
}
var script, add_script, remove_script;
for (var i = 0; i < scripts.length; i++) {
var add_html = "
document_buffer += global_html_pool[
" + i + "
];\n
";
add_html += "
document.getElementById('
" + obj_id + "
').innerHTML = document_buffer;\n";
script = document.createElement("script");
if (scripts[i].src) {
script.src = scripts[i].src;
if (typeof(global_script_src_pool[script.src]) == "undefined") {
global_script_src_pool[script.src] = true;
s += 2000;
}
else {
s += 10;
}
}
else {
script.text = scripts[i].text;
s += 10;
}
script.defer = true;
script.type = "text/javascript";
script.id = get_script_id();
global_script_pool[script.id] = script;
add_script = add_html;
add_script += "document.getElementsByTagName('
head
').item(0)";
add_script += ".appendChild(global_script_pool['
" + script.id + "
']);\n";
window.setTimeout(add_script, s);
remove_script = "document.getElementsByTagName('
head
').item(0)";
remove_script += ".removeChild(document.getElementById('
" + script.id + "
'));\n";
remove_script += "delete global_script_pool['
" + script.id + "
'];\n";
window.setTimeout(remove_script, s + 10000);
}
var end_script = "if (document_buffer.match(/<\\/script>/i)) {\n";
end_script += "set_innerHTML('
" + obj_id + "
', document_buffer, " + s + ");\n";
end_script += "}\n";
end_script += "else {\n";
end_script += "document.getElementById('
" + obj_id + "
').innerHTML = document_buffer;\n
";
end_script += "
innerhtml_lock =
null
;\n
";
end_script += "
}";
window.setTimeout(end_script, s);
}
相关推荐
1、【使用iframe】 在需要加载的页面中添加一个iframe,如下 代码如下: <...如:xxx[removed]=XMLHttp取得的数据 这样是不会执行JS,添加eval方法就ok了:如:xxx[removed]=eval(返XMLHttp取得的数据)
这是AJAX开发中很常见的问题,如果你不是一直在用JavaScript框架做开发,相信你早就发现这个问题了。本文分析了两个解决办法,其中一个是讲解jQuery框架的实现。 一、 问题描述 下面举个简单的例子,演示问题所在。...
是在CSDN论坛看到的一个问题,平常我也没有注意,或者说没有这样用吧。看代码 改动两个文本框里的值,把这个容器的innerHTML赋值给d2 foo() [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]不是预期的结果吧?...
48.在老的浏览器中不执行此JS:<!-- //--> 49.引用一个文件式的JS:<script type="text/javascript" src="aaa.js"> 50.指定在不支持脚本的浏览器显示的HTML:<noscript></noscript> 51.当超链和ONCLICK事件都有时,则老...
JQ 选择器大全包含:基本选择器,层级选择器,层级函数,过滤选择器,内容选择器,可见选择器,jq中显示相关的函数,属性选择器,子元素选择器,表单选择器。里面的练习题可以拿来练手
当你的应用需要依赖某个特定的JavaScript类库时,你无意中总会试图解决某些类库自身的问题,而不是语言的问题。就比如当我试图将文本(可能也包含HTML元素)用一个DIV元素包起来时。假设有以下HTML: This is some text ...
jQuery 使用名为 noConflict() 的方法来解决该问题。 var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。 亲自试一试 结论 由于 jQuery 是为处理 HTML 事件而特别设计的,那么当您遵循...
Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...
8.2 JavaScript的执行速度 8.2.1 测定应用时间的艰难方式 8.2.2 使用Venkman性能分析器 8.2.3 优化Ajax应用的执行速度 8.3 JavaScript的内存使用量 8.3.1 避免内存泄漏 8.3.2 Ajax的特殊考虑因素 8.4考虑性能的设计 ...
第一个问题是fixed的tr在ie7中不能进行定位,而且td在定位后并不能保持在表格中的布局,这样在原表格插tr就没意义了。 ps:fixed的相关应用可参考仿LightBox效果。 最后我用的方法是新建一个table,并把源tr克隆到...
远程脚本(尤其是广告)在加载页面时阻止页面执行任何其他操作。 它们对加载时间的贡献很大,这。 异步广告不会阻止页面,可以在核心内容( 之后投放。 为什么异步投放广告如此困难? 因为它们可能包含对[removed]...
在XML文档中任何的差错,都会得到同一个结果:网页不能被显示。各浏览器开发商已经达成协议,对XML实行严格而挑剔的解析,任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下,比如将改为,然后用IE5直接...
更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主页面中提交评论和留言。。这样在本系统中就可以为博友提供更多的个人色彩。在管理页面中添加和删除友情连接。这样博友可以在自己空间中快速定位...