【发布时间】:2011-01-27 11:53:56
【问题描述】:
尝试制作一些老式的 ajax (iframe-javascript) 脚本。 DOM导航使用了一点mootools
说明:
HTML:
1 个 iframe 称为“缓冲区”
1 个名为“显示”的 div
JAVASCRIPT:(简称:将 iframe 内容复制到页面上的 div 中)
1) iframe 上的 onLoad 触发 handler(),一个计数器确保它只运行一次 (这是因为否则firefox将进入反馈循环。我认为会发生什么:加载iframe> handler()> copyBuffer>更改iframe的src,firefox再次将其作为onload)
2) 调用copybuffer(),它设置iframe的src,然后将iframe内容复制到div中,然后擦除iframe内容
代码:
count=0;
function handler(){
if (count==0){
copyBuffer();
count++;
}
}
function copyBuffer(){
$('buffer').set('src','http://www.somelink.com/');
if (window.frames['buffer'] && $('display') ) {
$('display').innerHTML = window.frames['buffer'].document.body.innerHTML;
window.frames['buffer'].document.body.innerHTML="";
}
}
问题:
问题 1) 没有任何反应,内容没有加载到 div 中。但如果我要么:
A) 移除计数器,让脚本在反馈循环中运行:内容突然复制到 div 中,但当然有一个反馈循环正在进行,你可以看到它一直在状态栏中加载。
或
B) 在 copyBuffer 函数中插入警报。内容被复制,没有反馈循环。
为什么会这样?
问题 2) If 包裹着我从互联网上的来源获得的复制代码。我不确定它有什么作用?如果我删除它,代码将无法在:Safari 和 Chrome 中运行。
非常感谢!
更新:
就像答案所说我已经创建了一个事件处理程序。他们使用 jQuery,我在 mootools 中做了一个:
window.addEvent('domready', function() {
$('buffer').addEvent('load', function(){
$('display').set('html',window.frames['buffer'].document.body.innerHTML)
window.frames['buffer'].document.body.innerHTML="";
}).set('src','somelink');
});
额外问题:
3) 我是 stackoverflow 的新手(多么棒的地方!),如果我为后续问题创建新线程会更好吗?
【问题讨论】:
-
3) 你是对的:每个问题一个(不是三个、五个、七个)问题是自然的:)。
标签: javascript caching iframe copy